ccf+欧拉回路和dfs判断无向图的连通性+这里知道了bool标记visit以及vector和前向星存图
来源:互联网 发布:苹果的c语言编程软件 编辑:程序博客网 时间:2024/06/06 02:41
点击打开链接
#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>#include<cstring>#include<string>#include<math.h>#include<algorithm>#define LL long long#define inf 0x3f3f3f3f#define mod 1000000007#include<stack>using namespace std;int Arr[1002][1002],vis[1002][1002];int bian[1002],n=0,m=0;stack<int>Q;void euler(int u){for(int v=1;v<=n;v++){if(Arr[u][v]&&!vis[u][v]){vis[u][v]=vis[v][u]=1;euler(v); Q.push(v);}}}int main(){int i=0,a=0,b=0,num=0;scanf("%d%d",&n,&m);for(i=0;i<m;i++){scanf("%d%d",&a,&b);Arr[a][b]=Arr[b][a]=1;bian[a]++;bian[b]++;}for(i=0;i<m;i++){if(bian[i]%2) num++;}if((num!=0&&num!=2)||(num==2&&bian[1]%2==0)){printf("-1\n");}else{euler(1);printf("1 ");while(!Q.empty()){printf("%d ",Q.top());Q.pop();}printf("\n");}return 0;}
#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>#include<cstring>#include<string>#include<math.h>#include<algorithm>#define LL long long#define inf 0x3f3f3f3f#define mod 1000000007#define N 10002#include<vector>#include<stack>bool vis[N][N];bool visit[N];///必须使用bool型的额using namespace std;int bian[N],n=0,m=0;vector<int> G[N];stack<int> Q;void dfs(int u){visit[u]=true;///好像必须从这里开始额,第一个传进来的点就标记。作为模板记着吧。int d=G[u].size();for(int i=0;i<d;i++){int v=G[u][i];if(!visit[v]){dfs(v);}}}void euler(int u){int d=G[u].size();for(int i=0;i<d;i++){int v=G[u][i]; if(!vis[u][v]){vis[u][v]=vis[v][u]=true;euler(v);Q.push(v);}}}int main(){int i=0,a=0,b=0,num=0;memset(vis,false,sizeof(vis));scanf("%d%d",&n,&m);for(i=0;i<m;i++){scanf("%d%d",&a,&b);G[a].push_back(b);G[b].push_back(a);bian[a]++;bian[b]++;}for(i=0;i<n;i++){sort(G[i].begin(),G[i].begin()+G[i].size());}for(i=0;i<m;i++){if(bian[i]%2) num++;}dfs(1);///dfs判断无向图的连通性。 bool flag=0;for(int i=1;i<=n;i++){if(visit[i]==false){flag=true;break;}}///printf("%d\n",flag);if(flag==true){printf("-1\n");}else if((num!=0&&num!=2)||(num==2&&bian[1]%2==0)){printf("-1\n");}else{euler(1);printf("1 ");while(!Q.empty()){printf("%d ",Q.top());Q.pop();}printf("\n");}return 0;}
0 0
- ccf+欧拉回路和dfs判断无向图的连通性+这里知道了bool标记visit以及vector和前向星存图
- NYOJ+一笔画问题+先要判断无向图的连通性(DFS or并查集),然后使用欧拉回路。
- hdu 1878 欧拉回路 无向图连通性
- 有向图,无向图的欧拉回路和欧拉通路poj 2337
- 数据结构实验之图论八:欧拉回路 无向图的欧拉回路判断
- 无向图的欧拉回路和欧拉通路
- HDU1878无向图判断欧拉回路
- HDU 1878 无向图的欧拉回路的判断
- 无向图的欧拉回路线性时间算法
- POJ 1041 无向图的欧拉回路
- hdu 1878 无向图的欧拉回路
- [回忆向]关于有向和无向图连通性问题的yy证法
- 无向图的连通性
- 无向图的连通性
- 无向图的连通性问题(DFS)
- 判断无向图和有向图是否有回路
- 无向图和有向图关于连通性的tarjan算法
- 有向图和无向图的连通性学习小记 Poj 1269 迷宫城堡
- C++指针理解《一》
- 以模块化视角看卷积神经网络Conv Nets: A Modular Perspective
- cocos::触摸跟随移动
- Car accident on 24th Feb. 2016
- 第5周项目2 游戏角色(析构函数)
- ccf+欧拉回路和dfs判断无向图的连通性+这里知道了bool标记visit以及vector和前向星存图
- Centos6.5安装intel fortran compiler
- Git简单教程
- 一些算法Fanfiction, Graphs, and PageRank
- leetcode:Maximum Product of Word Lengths
- objective-c 第五天 类 对象 方法
- JSON包常用的方法
- oracle物理dg安装:方法一
- break退出循环