求助

P2319 [HNOI2006] 超级英雄

在线急等
by 羊叫兽同学 @ 2022-05-12 16:16:52


> $Talk \space is \space cheap, \space please \space show \space me \space the \space code.$
by JackMerryYoung @ 2022-05-12 16:21:10


@[JackMerryYoung](/user/224558) ???不是给你记录了吗
by 羊叫兽同学 @ 2022-05-14 13:57:44


```cpp #include<iostream> #include<cstdio> #include<cstring> #define int long long using namespace std; int n,m,s,l,e,first[1000000],nxt[1000000],u[1000000],v[1000000],d[1000000],i,j,k,ans,x,y,top,out[1000000]; bool flag[1000000]; bool dfs(int x) { int i; for(i=first[x];i!=0;i=nxt[i]) { if(flag[v[i]]) continue; flag[v[i]]=true; if(d[v[i]]==0||dfs(d[v[i]])) { d[v[i]]=x; return true; } } return false; } void add(int a,int b) { top++; u[top]=a; v[top]=b; nxt[top]=first[a]; first[a]=top; } signed main() { scanf("%lld%lld",&m,&n); for(i=1;i<=m;i++) { scanf("%d%d",&x,&y); x++; y++; add(i,x); if(x!=y) add(i,y); } for(i=1;i<=m;i++) { memset(flag,false,sizeof(flag)); if(dfs(i)) ans++; else break; } printf("%lld\n",ans); for(i=1;i<=n;i++) if(d[i]!=0) out[d[i]]=i; for(i=1;i<=ans;i++) printf("%lld\n",out[i]-1); } ```
by 羊叫兽同学 @ 2022-05-14 13:58:10


|