2011-06-18 00:41:15 地址:http://acm.fzu.edu.cn/problem.php?pid=1924 #include<iostream> #define N 1005 using namespace std; int flag[N][N]={0},cnt[N]={0}; int main() { int i,j,p,r,e1,e2,n,count=0,t,tt,tp,tr; scanf("%d",&t); for(tt=1;tt<=t;tt++) { scanf("%d%d%d%d",&p,&r,&e1,&e2); n=p+r; for(i=0;i<e1;i++) { scanf("%d%d",&tp,&tr); tr+=p; if(flag[tr][tp]==0) { cnt[tp]++; flag[tr][tp]=1; } } for(i=0;i<e2;i++) { scanf("%d%d",&tr,&tp); tr+=p; if(flag[tp][tr]==0) { cnt[tr]++; flag[tp][tr]=1; } } count=0; for(i=0;i<n;i++) { if(cnt[i]==0) { count++; for(j=0;j<n;j++) { cnt[j]-=flag[i][j]; } cnt[i]=-1; i=-1; } } // for(i=0;i<n;i++) cout<<cnt[i]<<endl; if(count>=n) printf("Case %d: Impossible/n",tt); else printf("Case %d: Possible/n",tt); for(i=0;i<n;i++) { cnt[i]=0; for(j=0;j<n;j++) flag[i][j]=0; } } return 0; }