| ||||||||||
| 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 | |||||||||
Re:1144 测试数据都对,为啥WA?In Reply To:1144 测试数据都对,为啥WA? Posted by:200691051 at 2009-03-06 23:33:49 > ///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