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 |
topsort做的,wa到不行了。求助高手#include"iostream" #include"cstdio" #include"string" #include"map" #include"queue" #define M 4000 using namespace std; int order[M]; typedef struct se { int num; struct se *next; }node; typedef struct no { int degree; node *first; }TREE; TREE N[M]; int visited[M]; void create_tree(int a,int b) { node *p; p=(node*)malloc(sizeof(node)); p->num=b; p->next=N[a].first; N[a].first=p; N[b].degree++; } int maax; int flag; void topsort() { queue<int>x; int i,j; for(i=1;i<=maax;i++) { if(N[i].degree==0&&visited[i]==0) { x.push(i); visited[i]=1; } } while(x.size()!=0) { int temp=x.front(); node *p; x.pop(); order[flag++]=temp; p=N[temp].first; while(p) { int j=p->num; if(--N[j].degree==0&&visited[j]==0) { x.push(j); visited[j]=1; } p=p->next; } } } int main() { int n; int ni=0; int i; scanf("%d",&n); while(n--) { map<string,int>str; map<int,string>str1; memset(order,0,sizeof(order)); memset(visited,0,sizeof(visited)); maax=0; flag=0; ni++; scanf("%d",&maax); for(i=0;i<=M;i++) N[i].degree=0; int s=1; for(i=0;i<maax-1;i++) { string a,b; cin>>a>>b; if(!str[a]) { str[a]=s; str1[s]=a; s++; } if(!str[b]) { str[b]=s; str1[s]=b; s++; } create_tree(str[a],str[b]); } topsort(); cout<<"Scenario #"<<ni<<":"<<endl; for(i=0;i<flag;i++) { cout<<str1[order[i]]<<endl; } cout<<endl; str.clear(); str1.clear(); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator