wa 9个

P2764 最小路径覆盖问题

``` #include<iostream> #include<cstdio> #include<ctime> #include<cstdlib> #include<cstring> using namespace std; const int maxx=155; int n,m; bool b[maxx][maxx]={0}; bool pan[maxx]={0}; int x[maxx]={0}; int y[maxx]={0},ans=0; bool used[maxx]; bool Find(int x) { if(used[x]) return 0; used[x]=1; for(int i=1;i<=n;i++) if(b[x][i]) if(!y[i]||Find(y[i])) { y[i]=x; return 1; } return 0; } int main() { int a,c; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d%d",&a,&c),b[a][c]=1; for(int i=1;i<=n;i++) memset(used,0,sizeof(used)),ans+=Find(i); for(int i=1;i<=n;i++) x[i]=i; for(int i=1;i<=n;i++) x[y[i]]=i; for(int i=1;i<=n;i++) { if(pan[i]) continue; int k=i; while(x[k]!=k) printf("%d ",k),k=x[k],pan[k]=1; printf("%d\n",k); pan[k]=1; } printf("%d",n-ans); return 0; } ```
by love2076328848 @ 2018-04-28 21:25:33


不用回复了
by love2076328848 @ 2018-04-28 21:29:24


|