hdu1856
求最大连通块……
#include<bits/stdc++.h> using namespace std; const int maxn=1e7+10; const int maxm=2*1e5+10; int vis[maxn]; int beg[maxn],nex[maxn],to[maxn],e; inline void add(int x,int y){ e++;nex[e]=beg[x]; beg[x]=e;to[e]=y; } inline int dfs(int x){ vis[x]=1; int cnt=1; for(int i=beg[x];i;i=nex[i]){ int t=to[i]; if(!vis[t])cnt+=dfs(t); } return cnt; } int main(){ int n; while(scanf("%d",&n)!=EOF){ int x,y; e=0; memset(vis,0,sizeof(vis)); memset(beg,0,sizeof(beg)); for(int i=1;i<=n;i++){ scanf("%d%d",&x,&y); add(x,y),add(y,x); } int ans=0; for(int i=1;i<=10000000;i++) if(!vis[i]) ans=max(ans,dfs(i)); printf("%d\n",ans); } return 0; }