#2WA #8TLE,都是map的错,对吗qwq

P3520 [POI2011] SMI-Garbage

应该不是,肯定是hack
by 智子·起源 @ 2023-03-23 11:28:21


现在是#2#8WA
by 智子·起源 @ 2023-03-23 11:30:58


```cpp #include<bits/stdc++.h> using namespace std; const int MAXN=100005; int n,m; int head[MAXN*20],nxt[MAXN*20],des[MAXN*20]; int tot=-1; bool vis[MAXN*20]; void Add(int x,int y){ nxt[++tot]=head[x]; des[tot]=y; head[x]=tot; } int fa[MAXN]; int getfa(int x){ if(fa[x]!=x)return fa[x]=getfa(fa[x]); return x; } void Merge(int x,int y){ x=getfa(x),y=getfa(y); fa[y]=x; } int K; int du[MAXN]; int t[MAXN]; int ans[MAXN],ansn; void dfs(int x){ for(int i=head[x];i>-1;i=nxt[i]){ if(vis[i])continue; vis[i]=vis[i^1]=1; dfs(des[i]); } ans[++ansn]=x; } int main(){ scanf("%d%d",&n,&m); memset(head,-1,sizeof(head)); for(int i=1;i<=n;++i) fa[i]=i; for(int i=0;i<m;++i){ int t1,t2,t3,t4; scanf("%d%d%d%d",&t1,&t2,&t3,&t4); if(t3!=t4){ ++du[t1],++du[t2]; Add(t1,t2); Add(t2,t1); Merge(t1,t2); } } for(int i=1;i<=n;++i){ // if(!du[i]) // return puts("NIE"),0; if(du[i]%2) return puts("NIE"),0; fa[i]=getfa(i); if(fa[i]==i)++K; } printf("%d\n",K); for(int i=1;i<=n;++i){ if(!du[i])continue; if(fa[i]==i){ ansn=0; dfs(i); printf("%d ",ansn-1); for(int j=ansn;j;--j){ printf("%d ",ans[j]); } printf("\n"); } } return 0; } ```
by 智子·起源 @ 2023-03-23 11:31:13


|