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 |
1144 测试数据都对,为啥WA?///pku 1144 Newwork ////WA #include<stdio.h> typedef struct Node { bool visited; char value; struct Node *next; }* node; char criticalnum=0; node a[101]; int nodenum=0; bool find=false; bool iscriticalnode=false; bool readin() //if the last line 0,stop do,return false .Every time solve one block { int i; char ch; scanf("%d",&nodenum); i=nodenum; if(nodenum==0) { return false; } for(i=0;i<=nodenum;i++) { a[i]=new struct Node; a[i]->visited=false; a[i]->value=i; a[i]->next=NULL; } getchar(); ////ignore the blank after the first line that expresses the nodenum while(i>0) { char first; i--; scanf("%c",&ch); if(ch=='0') { break; } first=ch-48; // a[first]=new struct Node; a[first]->value=first; a[first]->next=NULL; while(scanf("%c",&ch),ch!='\n')////read one line { if(ch==' ') continue; ch=ch-48; node temp,temp1; temp=new struct Node; temp->value=ch; temp->next=a[first]->next; a[first]->next=temp; temp1=new struct Node; temp1->value=a[first]->value; temp1->next=a[ch]->next; a[ch]->next=temp1; } } return true; } void CriticalNode(char num,char end,char remov) { if(find==true||a[num]->value==end) { find=true; return ; } if(num==remov) { return; } node p=a[num]->next; a[num]->visited=true; while(p!=NULL) { if(a[p->value]->visited==false) CriticalNode(p->value,end,remov); p=p->next; } } void print() { for(int i=1;i<=nodenum;i++) { node p=a[i]; while(p!=NULL) { printf("%d ",p->value); p=p->next; } printf("\n"); } } int main() { char i,j,k; while(readin()) { criticalnum=0; for(k=1;k<=nodenum;k++) ////remove k,see if it is critical node // k=6; { for(int m=1;m<=nodenum;m++) { a[m]->visited=false; } iscriticalnode=false; find=false; for(i=1;i<=nodenum;i++) { for(int m=1;m<=nodenum;m++) { a[m]->visited=false; } if(i==k) continue; if(iscriticalnode==true) break; for(j=i+1;j<=nodenum;j++) { for(int m=1;m<=nodenum;m++) { a[m]->visited=false; } if(j==k) { continue; } find=false; CriticalNode(i,j,k); if(find==false) { iscriticalnode=true; criticalnum++; // printf("k=%d\n",k); break; } }///end of for(j=i+1;j<=nodenum;j++) }///end of for(i=1;i<=nodenum;i++) iscriticalnode=false; }////end of for k printf("%d\n",criticalnum); // print(); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator