欧拉回路

来源:互联网 发布:python impacket库 编辑:程序博客网 时间:2024/06/05 19:14

http://acm.hdu.edu.cn/showproblem.php?pid=1878

对于无向图存在欧拉回路的两个条件:

1)所有的度为偶数

2)连通图

对于有向图:

1)所有的顶点入度等于出度

2)连通图

代码如下:

#include<bits/stdc++.h>using namespace std;const int maxn = 1005;vector<int>G[maxn];int vis[maxn];void dfs(int t){    vis[t] = 1;    for(int i = 0;i<G[t].size();i++){        if(!vis[G[t][i]])dfs(G[t][i]);    }}int main(){    int n,m;    while(cin>>n&&n){            cin>>m;        for(int i = 0;i<n;i++)G[i].clear();        memset(vis,0,sizeof(vis));        for(int i = 0;i<m;i++){            int a,b;            cin>>a>>b;            a--,b--;            G[a].push_back(b);            G[b].push_back(a);        }        int yn = -1;        for(int i = 0;i<n;i++){            int len = G[i].size();            if(len%2)yn++;            if(!vis[i]){dfs(i);yn+=1;}        }        if(yn == 0)cout<<1<<endl;        else cout<<0<<endl;    }}


1 0
原创粉丝点击