{"id":48,"date":"2009-12-12T14:30:00","date_gmt":"2009-12-12T06:30:00","guid":{"rendered":"http:\/\/localhost\/?p=48"},"modified":"2009-12-12T14:30:00","modified_gmt":"2009-12-12T06:30:00","slug":"usaco_2004_feb_1","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=48","title":{"rendered":"USACO 2004 Feb (1)"},"content":{"rendered":"<p> \u8fd9\u7edd\u5bf9\u662f\u6811\u7a9d\u3002\u3002\u5168\u662f\u5173\u4e8e\u6811\u7684\u9898\u76ee\u3002\u3002\u3002\u5012\u3002\u3002<br \/>1984.Navigation Nightmare<br \/>\u5927\u610f:<br \/>\u5c31\u662f\u4e00\u4e2a\u5730\u56fe\u3002\u3002\u6bcf\u6b21\u544a\u8bc9\u4f60\u4e00\u4e2a\u70b9\u76f8\u5bf9\u4e8e\u53e6\u4e00\u4e2a\u70b9\u7684\u5750\u6807\u3002\u3002\u7136\u540e\u6709\u4e00\u4e9b\u8be2\u95ee\u3002\u3002<br \/>\u90fd\u662f\u95ee\u4e24\u4e2a\u70b9\u4e4b\u95f4\u7684\u66fc\u54c8\u987f\u8ddd\u79bb\u662f\u591a\u5c11\u3002\u3002\u5982\u679c\u4fe1\u606f\u4e0d\u591f\u5c31\u8f93\u51fa-1\u3002\u3002<br \/>\u597d\u50cf\u6709\u70b9\u96be\u3002\u3002\u5982\u679c\u4e0d\u662f\u52a8\u6001\u67e5\u8be2\u7684\u8bdd\u53ea\u597d\u7b97\u51fa\u6bcf\u4e2a\u70b9\u7684\u5750\u6807\u5c31\u53ef\u4ee5\u4e86\u3002\u3002\u4f46\u8fd9\u91cc\u662f\u52a8\u6001\u7684\u3002<br \/>\u5f88\u9ebb\u70e6\u3002\u3002\u6211\u60f3\u4e86\u60f3\u53d1\u73b0\u662f\u53ef\u4ee5\u7528\u5e76\u67e5\u96c6\u505a\u7684\u3002\u3002<br \/>\u5bf9\u6bcf\u4e2a\u70b9i\u3002F[i]\u662f\u5176\u7236\u4eb2\u3002\u3002D[i]\u662f\u76f8\u5bf9\u4e8e\u5176\u7236\u4eb2\u4ed6\u7684\u5750\u6807\u3002\u3002<br \/>\u90a3\u4e48\u5728\u8def\u5f84\u538b\u7f29\u7684\u65f6\u5019\u53ef\u4ee5\u987a\u4fbf\u7ef4\u62a4D[i]\u3002\u3002<br \/>\u5bf9\u4e8e\u4e00\u4e2a\u70b9Find\u4e00\u4e0b\u5c31\u53ef\u4ee5\u7b97\u51fa\u5176\u5bf9\u4e8e\u6839\u7684\u5750\u6807\u3002\u3002\u67e5\u8be2\u5982\u679c\u6839\u4e0d\u540c\u5219\u4e0d\u77e5\u9053\u3002\u3002<br \/>\u8fde\u63a5\u7684\u65f6\u5019\u8bb0\u5f97\u8981\u8f6c\u6362\u4e00\u4e0b\u76f8\u5bf9\u7684\u5750\u6807\u3002\u3002<br \/>\u5426\u5219\u5c31\u662f\u5750\u6807\u7684\u66fc\u54c8\u987f\u8ddd\u79bb\u3002\u3002<br \/>Code\u3002\u3002<br \/>#include&lt;cstdio&gt;<br \/>#include&lt;utility&gt;<br \/>#include&lt;algorithm&gt;<br \/>using namespace std;<br \/>const int maxn=40000;<br \/>typedef pair&lt;int,int&gt; pi;<br \/>inline int abs(int x){return x&lt;0?-x:x;}<br \/>inline pi operator+(const pi&amp;x,const pi&amp;y)<br \/>{<br \/> return pi(x.first+y.first,x.second+y.second);<br \/>}<br \/>inline pi operator-(const pi&amp;x,const pi&amp;y)<br \/>{<br \/> return pi(x.first-y.first,x.second-y.second);<br \/>}<br \/>inline int dist(const pi&amp;x,const pi&amp;y)<br \/>{<br \/> return abs(x.first-y.first)+abs(x.second-y.second);<br \/>}<br \/>pi get(int l,char d)<br \/>{<br \/> switch(d)<br \/> {<br \/>  case &#8216;N&#8217;:return pi(0,l);<br \/>  case &#8216;S&#8217;:return pi(0,-l);<br \/>  case &#8216;E&#8217;:return pi(l,0);<br \/>  case &#8216;W&#8217;:return pi(-l,0); <br \/> }<br \/>}<br \/>struct data<br \/>{<br \/> int s,t,l;<br \/> char d;<br \/>}D[maxn];<br \/>struct query<br \/>{<br \/> int x,y,t,n;<br \/> bool operator&lt;(const query&amp;x) const<br \/> {return t&lt;x.t;}<br \/>}Q[maxn];<br \/>int n,m,k;<br \/>void init()<br \/>{<br \/> scanf(&quot;%d %d&quot;,&amp;n,&amp;m);<br \/> for(int i=0;i&lt;m;i++)<br \/>  scanf(&quot;%d %d %d %c&quot;,&amp;D[i].s,&amp;D[i].t,&amp;D[i].l,&amp;D[i].d);<br \/> scanf(&quot;%d&quot;,&amp;k);<br \/> for(int i=0;i&lt;k;i++)<br \/>  scanf(&quot;%d %d %d&quot;,&amp;Q[i].x,&amp;Q[i].y,&amp;Q[i].t),Q[i].n=i;<br \/> sort(Q,Q+k);<br \/>}<br \/>int F[maxn];<br \/>pi P[maxn];<br \/>void set(int n)<br \/>{<br \/> for(int i=0;i&lt;n;i++)<br \/>  F[i]=i,P[i]=pi(0,0);<br \/>}<br \/>void find(int x)<br \/>{<br \/> if(x!=F[x])<br \/>  find(F[x]),P[x]=P[x]+P[F[x]],F[x]=F[F[x]];<br \/>}<br \/>void Union(int x,int y,pi d)<br \/>{<br \/> find(x);d=d-P[x];x=F[x];<br \/> find(y);d=d+P[y];y=F[y];<br \/> F[x]=y;P[x]=d;<br \/>}<br \/>int ask(int x,int y)<br \/>{<br \/> find(x);find(y);<br \/> if(F[x]!=F[y]) return -1; <br \/> return dist(P[x],P[y]);<br \/>}<br \/>void deal(data x)<br \/>{<br \/> x.s&#8211;;x.t&#8211;;<br \/> pi d=get(x.l,x.d);<br \/> Union(x.s,x.t,d);<br \/>}<br \/>int main()<br \/>{<br \/> init();<br \/> set(n); <br \/> int last=0;<br \/> int Ans[maxn];<br \/> for(int i=0;i&lt;k;i++)<br \/> {<br \/>  for(int j=last;j&lt;Q[i].t;j++)<br \/>  {<br \/>   deal(D[j]);<br \/>  }<br \/>  last=Q[i].t;Ans[Q[i].n]=ask(Q[i].x-1,Q[i].y-1);<br \/> }<br \/> for(int i=0;i&lt;k;i++)<br \/> <a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/printf.html\">printf<\/a>(&quot;%dn&quot;,Ans[i]);<br \/>}1985.Cow Marathon<br \/>\u5927\u610f:<br \/>\u4e00\u9897\u6811\uff0c\u6c42\u5176\u4e2d\u8ddd\u79bb\u6700\u8fdc\u7684\u4e24\u70b9\u7684\u8ddd\u79bb\u3002\u3002<br \/>\u7ecf\u5178\u7b97\u6cd5\u3002\u3002\u4e24\u6b21dfs\u3002\u3002<br \/>\u4e5f\u53ef\u4ee5DP\u3002\u3002<br \/>\u6c34\u9898\u5c31\u4e0d\u591a\u8bf4\u4e86\u3002\u3002\u3002<br \/>Code\u3002\u3002<br \/>#include&lt;cstdio&gt;<br \/>#include&lt;utility&gt;<br \/>#include&lt;vector&gt;<br \/>#include&lt;cstring&gt;<br \/>using namespace std;<br \/>typedef pair&lt;int,int&gt; pi;<br \/>typedef vector&lt;pi&gt;::iterator it;<br \/>const int maxn=40000;<br \/>int n,m;<br \/>vector&lt;pi&gt; E[maxn];<br \/>inline void add(int s,int t,int c)<br \/>{<br \/> E[s].push_back(pi(t,c));<br \/> E[t].push_back(pi(s,c));<br \/>}<br \/>void init()<br \/>{<br \/> scanf(&quot;%d %d&quot;,&amp;n,&amp;m);int s,t,c;char a;<br \/> while(m&#8211;)<br \/> {<br \/>  scanf(&quot;%d %d %d %c&quot;,&amp;s,&amp;t,&amp;c,&amp;a);s&#8211;;t&#8211;;<br \/>  add(s,t,c);<br \/> }<br \/>}<br \/>int dist[maxn];<br \/>bool vis[maxn];<br \/>void dfs(int x,int d)<br \/>{<br \/> vis[x]=true;dist[x]=d;<br \/> for(it i=E[x].begin();i!=E[x].end();i++)<br \/>  if(!vis[i-&gt;first]) <br \/>  {<br \/>   dfs(i-&gt;first,d+i-&gt;second);<br \/>  }<br \/>}<br \/>int find(int t)<br \/>{<br \/> memset(vis,false,sizeof(vis));<br \/> dfs(t,0);int mi=0;<br \/> for(int i=1;i&lt;n;i++)<br \/>  if(dist[i]&gt;dist[mi])  <br \/>   mi=i;<br \/> return mi;<br \/>}<br \/>int main()<br \/>{<br \/> init();<br \/> int t=find(0);<br \/> <a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/printf.html\">printf<\/a>(&quot;%dn&quot;,dist[find(t)]);<br \/>} <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u7edd\u5bf9\u662f\u6811\u7a9d\u3002\u3002\u5168\u662f\u5173\u4e8e\u6811\u7684\u9898\u76ee\u3002\u3002\u3002\u5012\u3002\u30021984.Navigation Nightmare\u5927\u610f:\u5c31\u662f\u4e00\u4e2a\u5730\u56fe\u3002\u3002\u6bcf\u6b21\u544a\u8bc9\u4f60\u4e00\u4e2a\u70b9\u76f8\u5bf9\u4e8e\u53e6\u4e00\u4e2a\u70b9\u7684\u5750\u6807\u3002\u3002\u7136\u540e\u6709\u4e00\u4e9b\u8be2\u95ee\u3002\u3002\u90fd\u662f\u95ee\u4e24\u4e2a\u70b9\u4e4b\u95f4\u7684\u66fc\u54c8\u987f\u8ddd\u79bb\u662f\u591a\u5c11\u3002\u3002\u5982\u679c\u4fe1\u606f\u4e0d\u591f\u5c31\u8f93\u51fa-1\u3002\u3002\u597d\u50cf\u6709\u70b9\u96be\u3002\u3002\u5982\u679c\u4e0d\u662f\u52a8\u6001\u67e5\u8be2\u7684\u8bdd\u53ea\u597d\u7b97\u51fa\u6bcf\u4e2a\u70b9\u7684\u5750\u6807\u5c31\u53ef\u4ee5\u4e86\u3002\u3002\u4f46\u8fd9\u91cc\u662f\u52a8\u6001\u7684\u3002\u5f88\u9ebb\u70e6\u3002\u3002\u6211\u60f3\u4e86\u60f3\u53d1\u73b0\u662f\u53ef\u4ee5\u7528\u5e76\u67e5\u96c6\u505a\u7684\u3002\u3002\u5bf9\u6bcf\u4e2a\u70b9i\u3002F[i]\u662f\u5176\u7236\u4eb2\u3002\u3002D[i]\u662f\u76f8\u5bf9\u4e8e\u5176\u7236\u4eb2\u4ed6\u7684\u5750\u6807\u3002\u3002\u90a3\u4e48\u5728\u8def\u5f84\u538b\u7f29\u7684\u65f6\u5019\u53ef\u4ee5\u987a\u4fbf\u7ef4\u62a4D[i]\u3002\u3002\u5bf9\u4e8e\u4e00\u4e2a\u70b9Find\u4e00\u4e0b\u5c31\u53ef\u4ee5\u7b97\u51fa\u5176\u5bf9\u4e8e\u6839\u7684\u5750\u6807\u3002\u3002\u67e5\u8be2\u5982\u679c\u6839\u4e0d\u540c\u5219\u4e0d\u77e5\u9053\u3002\u3002\u8fde\u63a5\u7684\u65f6\u5019\u8bb0\u5f97\u8981\u8f6c\u6362\u4e00\u4e0b\u76f8\u5bf9\u7684\u5750\u6807\u3002\u3002\u5426\u5219\u5c31\u662f\u5750\u6807\u7684\u66fc\u54c8\u987f\u8ddd\u79bb\u3002\u3002Code\u3002\u3002#include&lt;cstdio&gt;#include&lt;utility&gt;#include&lt;algorithm&gt;using namespace std;const int maxn=40000;typedef pair&lt;int,int&gt; pi;inline int abs(int x){return x&lt;0?-x:x;}inline pi operator+(const pi&amp;x,const pi&amp;y){ return pi(x.first+y.first,x.second+y.second);}inline pi operator-(const pi&amp;x,const pi&amp;y){ return pi(x.first-y.first,x.second-y.second);}inline int dist(const pi&amp;x,const pi&amp;y){ return abs(x.first-y.first)+abs(x.second-y.second);}pi get(int l,char d){ switch(d) { case &#8216;N&#8217;:return pi(0,l); case &#8216;S&#8217;:return pi(0,-l); case &#8216;E&#8217;:return pi(l,0); case &#8216;W&#8217;:return pi(-l,0); }}struct data{ int s,t,l; char d;}D[maxn];struct query{ int [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/48"}],"collection":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=48"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}