3 31 21 32 33 21 22 30 Sample Output10题目大意:
题目意思如题,无向图欧拉回路
题目思路:
对于无向图欧拉回路我们只需判断图联通和每个点的度是否都为偶数
AC代码:
#include<cstring>#include<cstdio>#include<queue>using std::queue;int n;int mp[1005][1005];bool bfs(int u){ //bfs判联通 queue<int>q; q.push(u); int vis[1005]; memset(vis,0,sizeof(vis)); vis[u]=1; while(!q.empty()){ u=q.front(); q.pop(); for(int i=1;i<=n;i++){ if(!vis[i]&&mp[u][i]){q.push(i),vis[i]=1;} } } for(int i=1;i<=n;i++)if(!vis[i])return false; return true;}int main(){ int m; while(~scanf("%d",&n),n){ scanf("%d",&m); int num[1005]; memset(num,0,sizeof(num)); memset(mp,0,sizeof(mp)); while(m--){ int u,v; scanf("%d%d",&u,&v); mp[u][v]=mp[v][u]=1; num[u]++,num[v]++; } int i; for(i=1;i<=n;i++){ if(!num[i]||num[i]%2){ //是否度都为偶数 printf("0/n"); break; } } if(i==n+1){ if(bfs(1))printf("1/n"); else printf("0/n"); } } return 0;}
新闻热点
疑难解答