美文网首页
欧拉回路的判断

欧拉回路的判断

作者: db5bacb5a79c | 来源:发表于2015-08-05 18:10 被阅读121次

#include <bits/stdc++.h>

using namespace std;

const int N=1005;

int G[N][N];///邻接矩阵存储图

int vis[N];///遍历时标记该点是否被访问过

int deg[N];///存储节点的度

void dfs(int v,int n){///深度优先遍历,递归

vis[v]=1;

for(int i=1; i<=n; ++i){

if(G[v][i]&&!vis[i]) dfs(i,n);

}

}

void init(){

memset(G,0,sizeof(G));

memset(vis,0,sizeof(vis));

memset(deg,0,sizeof(deg));

}

int main(){

int n,m;

while(scanf("%d%d",&n,&m)!=EOF&&n){

init();

int flag=1;

for(int i=0; i

int u,v;scanf("%d %d",&u,&v);

G[u][v]=G[v][u]=1;deg[u]++;deg[v]++;

}

dfs(1,n);///从第一个顶点搜索

for(int i=1; i<=n; ++i){

if(!vis[i]){

flag=0;///若有点未曾被访问,即一次深度遍历有未访问的点,则不存在欧拉回路

break;

}

if(deg[i]&1){

flag=0;///若有点的度不是偶数,则不存在欧拉回路

break;

}

}

if(flag) puts("1");

else puts("0");

}return 0;

}

并查集:

#include <bits/stdc++.h>

using namespace std;

const int N=1005;

int deg[N],fa[N];

int t,n,m;

int Find(int x){

if(x==fa[x]) return x;

return fa[x]=Find(fa[x]);

}

void Union(int x,int y){

int fx=Find(x);int fy=Find(y);

if(fx!=fy) fa[x]=fy;

}

bool solve(){

int cnt=0;

for(int i=1; i<=n; ++i){

if(fa[i]==i) cnt++;

}

if(cnt!=1) return false;

for(int i=1; i<=n; ++i){

if(deg[i]&1) return false;

}

return true;

}

int main()

{

while(scanf("%d%d",&n,&m)!=EOF&&n){

for(int i=1; i<=n; ++i) {fa[i]=i,deg[i]=0;}

int u,v;

for(int i=0; i

scanf("%d%d",&u,&v);Union(u,v);deg[u]++;deg[v]++;

}

if(solve()) puts("1");

else puts("0");

} return 0;

}

相关文章

  • 欧拉路径和Hierholzer算法

    内容概要: 欧拉回路和欧拉路径 Hierholzer算法求解欧拉回路和欧拉路径 欧拉回路的应用:LeetCode7...

  • HDU --- 1878 判断图是否为欧拉回路

    题意:这道题讲的是判断所给图中是否存在一个欧拉回路。 知识普及: 欧拉通路: 通过图中每条边且只通过一次,并且经过...

  • 欧拉回路

    欧拉通路与欧拉回路 欧拉通路: 对于图G来说,如果存在一条通路包含G中所有的边,则该通路成为欧拉通路,也称欧拉路径...

  • 欧拉回路的判断

    #include using namespace std; const int N=1005; int G[N][...

  • 332. Reconstruct Itinerary

    key tips 属于欧拉路径问题 欧拉路径问题 欧拉回路:遍历图中所有的边,每条边只遍一次,并且回到开始节点 欧...

  • 有向图环检测、拓扑排序和有向欧拉图

    内容概要: DAG图及有向图环检测 拓扑排序与环检测 有向欧拉图的欧拉回路Hierholzer算法 有向图环检测 ...

  • ccf/csp 认证 2018.12 第五题

    题意:大意就是在一个图中给定条件让寻找欧拉回路,使得欧拉回路最短,不过这个欧拉回路有些特殊,有些边可以多次经过,有...

  • 假如用MC大片的形式来打开同学之间打架

    “欧拉欧拉欧拉欧拉欧拉欧拉欧拉……” “啊哒哒哒哒哒哒哒哒哒哒哒……” “你们在干嘛呀喂...

  • 第一天

    utellm I said lololololol 欧拉欧拉欧拉欧拉 wryyyyyyyyyyyyyyy

  • 欧拉图

    定义欧拉通路图中行遍所有顶点且恰好经过图中的每条边一次的通路. 顶点可以重复经过,边只经过一次。欧拉回路图中行遍...

网友评论

      本文标题:欧拉回路的判断

      本文链接:https://www.haomeiwen.com/subject/wvzvqttx.html