{"id":181,"date":"2010-03-23T12:35:00","date_gmt":"2010-03-23T04:35:00","guid":{"rendered":"http:\/\/localhost\/?p=181"},"modified":"2010-03-23T12:35:00","modified_gmt":"2010-03-23T04:35:00","slug":"usaco_telecowmunication","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=181","title":{"rendered":"USACO Telecowmunication"},"content":{"rendered":"\n<p>\u6211\u7a81\u7136\u5f88\u6000\u5ff5USACO\uff0c\u53bb\u5e74\u6211A\u7684\u5dee\u4e0d\u591a\u4e86\u5c31\u4e0d\u60f3A\u4e86\u3002\u3002\u8fd9\u4e2a\u6708\u628a\u5b83A\u5b8c\u5427(*^__^*) <br \/>\u8fd9\u4e2a\u9898\u76ee\u5927\u610fnocow\u4e0a\u6709\u3002\u3002\u4e0d\u8fc7\u6211\u7684\u7b97\u6cd5\u5b8c\u5168\u662f\u9519\u7684\u5c45\u7136\u8fc7\u4e86\u56e7\u3002\u3002<br \/>\u5f88\u660e\u663e\u662f\u4e00\u4e2a\u6700\u5c0f\u5272\u7684\u95ee\u9898\uff0c\u5173\u952e\u662f\u8981\u8ba9\u5b57\u5178\u5e8f\u6700\u5c0f\uff0c<br \/>\u4e00\u822c\u6765\u8bf4\u662f\u8981\u4e00\u4e2a\u4e2a\u8fb9\u679a\u4e3e\u7684\u5220\u8fc7\u53bb\u7684\uff0c\u4f46\u662f\u6211\u61d2\u5f97\u600e\u4e48\u641e\uff0c\u4e8e\u662f\u6211\u7ed9\u6bcf\u4e2a\u8282\u70b9\u7684\u70b9\u6743\u6539\u6210\u4e8610000+i i\u8868\u793a\u7b2ci\u4e2a\u8282\u70b9\uff0c\u7136\u540e\u5c31\u8fd9\u6837\u505a\u4e86\u3002\u3002<br \/>\u7ed3\u679c\u5c45\u7136AC\u4e86\u3002\u8fd9\u6570\u636e\u4e5f\u592a\u70c2\u4e86\u56e7\u3002\u3002<br \/>Code: <\/p>\n<p>\/*  PROG: telecow  LANG: C++  ID: Tom Chen*\/#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;#include&lt;cmath&gt;#include&lt;cstdlib&gt;#include&lt;cstring&gt;#include&lt;string&gt;#include&lt;vector&gt;#include&lt;set&gt;#include&lt;queue&gt;#include&lt;map&gt;#define rep(i,n) for(int i=0;i&lt;n;i++)#define For(i,a,b) for(int i=a;i&lt;=b;i++)#define tr(i,x) for(typeof(x.begin()) i=x.begin();i!=x.end();i++)#define all(x) x.begin(),x.end()#define pb push_backusing namespace std;const int inf=~0U&gt;&gt;1,maxn=200+10;typedef vector&lt;int&gt; vi;struct Edge{    int t,c;    Edge*next,*op;    Edge(int _t,int _c,Edge* _next):t(_t),c(_c),next(_next){}}*E[maxn]={0};void InsEdge(int s,int t,int c){    E[s]=new Edge(t,c,E[s]);    E[t]=new Edge(s,0,E[t]);    E[s]-&gt;op=E[t];E[t]-&gt;op=E[s];}int vs,vt,n,m;int h[maxn],vh[maxn];const int in=0,out=1,off=10000;inline int node(int x,int type){    return x*2+type;}void Init(){    cin&gt;&gt;n&gt;&gt;m&gt;&gt;vs&gt;&gt;vt;vs&#8211;;vt&#8211;;    vs=node(vs,out);    vt=node(vt,in);    int s,t;    rep(i,n) InsEdge(node(i,in),node(i,out),off+i);    while(m&#8211;)    {        cin&gt;&gt;s&gt;&gt;t;&#8211;s;&#8211;t;        InsEdge(node(s,out),node(t,in),inf);        InsEdge(node(t,out),node(s,in),inf);    }}int v;int aug(int no,int m){    if(no==vt) return m;    int l=m;    for(Edge*i=E[no];i;i=i-&gt;next)if(i-&gt;c&amp;&amp;h[no]==h[i-&gt;t]+1)    {        int d=aug(i-&gt;t,min(l,i-&gt;c));        i-&gt;c-=d,i-&gt;op-&gt;c+=d,l-=d;        if(!l||h[vs]&gt;=v) return m-l;    }    int minh=v;    for(Edge*i=E[no];i;i=i-&gt;next)if(i-&gt;c)        minh=min(minh,h[i-&gt;t]+1);    if(!&#8211;vh[h[no]]) h[vs]=v;++vh[h[no]=minh];    return m-l;}int CalFlow(){    memset(h,0,sizeof(h));    memset(vh,0,sizeof(vh));    v=n*2;vh[0]=v;int flow=0;    while(h[vs]&lt;v) flow+=aug(vs,inf);    return flow;}bool Vis[maxn]={0};void dfs(int x){    Vis[x]=true;    for(Edge*i=E[x];i;i=i-&gt;next)if(i-&gt;c&amp;&amp;!Vis[i-&gt;t])dfs(i-&gt;t);}bool Used(int x){    if (Vis[node(x,in)]&amp;&amp;!Vis[node(x,out)]) return true;    return false;}void Work(){    int flow=CalFlow()\/off;    cout&lt;&lt;flow&lt;&lt;endl;    vi Ans;    dfs(vs);    rep(i,n)if(Used(i)) Ans.pb(i+1);    cout&lt;&lt;Ans[0];    for(int i=1;i&lt;Ans.size();i++)        cout&lt;&lt;&quot; &quot;&lt;&lt;Ans[i];    cout&lt;&lt;endl;}int main(){    freopen(&quot;telecow.in&quot;,&quot;r&quot;,stdin);    freopen(&quot;telecow.out&quot;,&quot;w&quot;,stdout);    Init();    Work();}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u7a81\u7136\u5f88\u6000\u5ff5USACO\uff0c\u53bb\u5e74\u6211A\u7684\u5dee\u4e0d\u591a\u4e86\u5c31\u4e0d\u60f3A\u4e86\u3002\u3002\u8fd9\u4e2a\u6708\u628a\u5b83A\u5b8c\u5427(*^__^*) \u8fd9\u4e2a\u9898\u76ee\u5927\u610fnocow\u4e0a\u6709\u3002\u3002\u4e0d\u8fc7\u6211\u7684\u7b97\u6cd5\u5b8c\u5168\u662f\u9519\u7684\u5c45\u7136\u8fc7\u4e86\u56e7\u3002\u3002\u5f88\u660e\u663e\u662f\u4e00\u4e2a\u6700\u5c0f\u5272\u7684\u95ee\u9898\uff0c\u5173\u952e\u662f\u8981\u8ba9\u5b57\u5178\u5e8f\u6700\u5c0f\uff0c\u4e00\u822c\u6765\u8bf4\u662f\u8981\u4e00\u4e2a\u4e2a\u8fb9\u679a\u4e3e\u7684\u5220\u8fc7\u53bb\u7684\uff0c\u4f46\u662f\u6211\u61d2\u5f97\u600e\u4e48\u641e\uff0c\u4e8e\u662f\u6211\u7ed9\u6bcf\u4e2a\u8282\u70b9\u7684\u70b9\u6743\u6539\u6210\u4e8610000+i i\u8868\u793a\u7b2ci\u4e2a\u8282\u70b9\uff0c\u7136\u540e\u5c31\u8fd9\u6837\u505a\u4e86\u3002\u3002\u7ed3\u679c\u5c45\u7136AC\u4e86\u3002\u8fd9\u6570\u636e\u4e5f\u592a\u70c2\u4e86\u56e7\u3002\u3002Code: \/* PROG: telecow LANG: C++ ID: Tom Chen*\/#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;#include&lt;cmath&gt;#include&lt;cstdlib&gt;#include&lt;cstring&gt;#include&lt;string&gt;#include&lt;vector&gt;#include&lt;set&gt;#include&lt;queue&gt;#include&lt;map&gt;#define rep(i,n) for(int i=0;i&lt;n;i++)#define For(i,a,b) for(int i=a;i&lt;=b;i++)#define tr(i,x) for(typeof(x.begin()) i=x.begin();i!=x.end();i++)#define all(x) x.begin(),x.end()#define pb push_backusing namespace std;const int inf=~0U&gt;&gt;1,maxn=200+10;typedef vector&lt;int&gt; vi;struct Edge{ int t,c; Edge*next,*op; Edge(int _t,int _c,Edge* _next):t(_t),c(_c),next(_next){}}*E[maxn]={0};void InsEdge(int s,int t,int c){ E[s]=new Edge(t,c,E[s]); E[t]=new Edge(s,0,E[t]); E[s]-&gt;op=E[t];E[t]-&gt;op=E[s];}int vs,vt,n,m;int h[maxn],vh[maxn];const int in=0,out=1,off=10000;inline int node(int x,int type){ [&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\/181"}],"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=181"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/181\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}