Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
无限wa,不明白错哪了#include<cstdio> #include<cstring> #define MN 1100 #define ME 2200 struct { int to; int pre; }edges[ME]; int box[MN],len; void iniPreLinkList(int n) { memset(box,-1,sizeof(box)); len = 0; } void addDirectedEdge(int frm,int to) { edges[len].to = to; edges[len].pre = box[frm]; box[frm] = len++; } void addDoubleEdge(int a,int b) { addDirectedEdge(a,b); addDirectedEdge(b,a); } int father[MN],order[MN]; bool visited[ME]; int find(int x) { if(x!=father[x]) father[x]=find(father[x]); return father[x]; } void tardfs(int cur) { int ads,ct; for(ads = box[cur];~ads;ads=edges[ads].pre) { if(visited[ads])continue; ct = edges[ads].to; if(order[ct]==0) { visited[ads] = true; visited[ads^1] = true; order[ct] = order[cur]+1; tardfs(ct); } if(order[find(ct)]<order[find(cur)]) father[find(cur)] = find(ct); } } int tarjan(int n) { int i; int isolated_point=0; for(i=1;i<=n;i++) { father[i] = i; order[i] = 0; } memset(visited,false,sizeof(visited)); for(i=1;i<=n;i++) { if(!order[i]) { isolated_point++; order[i] = 1; tardfs(i); } } if(isolated_point==1) isolated_point=0; return isolated_point; } //这里order做判重用 //题中给的是连通的图,所以不需要考虑不连通的情况 int solve(int n) { int ans=0,cnt,i,rt,ads,ct; for(i=1;i<=n;i++) { rt = find(i); if(order[rt]) { cnt=0; order[rt]=0; for(ads=box[rt];~ads;ads=edges[ads].pre) { ct = edges[ads].to; if(find(ct)!=rt) cnt++; } if(cnt==1) ans++; } } return (ans+1)/2; } int main() { char sample[100]; int n,m,a,b,i; int isolated_point;//考虑一下不连通,加不加都是wa啊 while(gets(sample)) { if(strlen(sample)<3)continue; scanf("%d%d",&n,&m); iniPreLinkList(n); for(i=0;i<m;i++) { scanf("%d%d",&a,&b); addDoubleEdge(a,b); } isolated_point=tarjan(n); printf("Output for %s\n",sample); printf("%d\n",solve(n)+isolated_point); } return 0; } /* Sample Input 1 10 12 1 2 1 3 1 4 2 5 2 6 5 6 3 7 3 8 7 8 4 9 4 10 9 10 Sample Input 2 3 3 1 2 2 3 1 3 我在下一世等你 11 14 1 2 1 3 1 4 2 5 6 11 2 6 5 6 5 11 3 7 3 8 7 8 4 9 4 10 9 10 看那温暖晨曦 11 14 1 2 1 3 1 4 5 11 2 5 2 6 5 6 6 11 3 7 3 8 7 8 4 9 4 10 9 10 美丽的程序娘小優YoU 5 4 1 2 2 4 4 3 2 5 幽幽子 3 3 1 2 2 3 3 1 */ Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator