其实题目里有些内容忽悠人。road intersection讲的就是路的名字,像城市一样作为一个点,是顶点。而路则是边。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int maxn=210;
int p[maxn],d[maxn];//dgree
int find(int x)
{
return p[x]==x? x:p[x]=find(p[x]);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("10596.txt","r",stdin);
#endif
int n,r;
while(scanf("%d%d",&n,&r)==2 && n)
{
if(!r)
{
printf("Not Possible\n");
continue;
}
int i,j;
memset(d,0,sizeof(d));
for(i=0; i<n; i++) p[i]=i;
for(i=0; i<r; i++)
{
int u,v;
scanf("%d%d",&u,&v);
d[u]++;
d[v]++;
int p1=find(u),p2=find(v);
if(p1!=p2)
p[p1]=p2;
}
for(i=0;!d[i];i++);
int t=find(i);
bool ok=true;
for(j=i+1; j<n; j++)
if(find(j)!=t)
{
ok=false;
break;
}
if(ok)
for(j=i; j<n; j++)
{
if(d[j]%2)
{
ok=false;
break;
}
}
if(ok) printf("Possible\n");
else printf("Not Possible\n");
}
return 0;
}