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 <cstdlib> #include <iostream> #include <queue> using namespace std; int N,M,rest[201],k; bool visa[201],visb[201]; struct inte { int x; friend bool operator <(inte a,inte b){ return b.x<a.x; } }; priority_queue <inte > map[201]; struct node { int a,b; }res[201]; int cmp(const void *a1,const void *a2){ node *p1=(node *)a1; node *p2=(node *)a2; return p1->b-p2->b; } bool findit(int a){ //printf("a=%d\n",a); inte to; visa[a]=true; while(!map[a].empty()){ to=map[a].top(); map[a].pop(); if(visb[to.x])continue; if(visa[to.x])return false; if(findit(to.x)==false)return false; } rest[k++]=a; visb[a]=true; return true; } int main(int argc, char *argv[]) { int T,a,b; cin>>T; while(T--){ cin>>N>>M; bool ok=true; for(int i=0;i<=N;i++)while(!map[i].empty())map[i].pop(); inte t; for(int i=0;i<M;i++){ cin>>a>>b; t.x=a; map[b].push(t); if(a==b)ok=false; } if(!ok){ printf("-1\n"); continue; } //printf("ok=%d\n",i); memset(visb,false,sizeof(visb)); k=0; for(int i=1;i<=N;i++){ if(visb[i])continue; memset(visa,false,sizeof(visa)); if(findit(i)==false){ ok=false; break; } } if(!ok){ printf("-1\n"); continue; } for(int i=0;i<k;i++){ res[i].a=i+1; res[i].b=rest[i]; } qsort(res,k,sizeof(node),cmp); for(int i=0;i<k;i++){ printf((i==0)?"%d":" %d",res[i].a); } printf("\n"); } //system("PAUSE"); return EXIT_SUCCESS; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator