欧拉道路:一个图的是连通的,且最多只能有2个奇点(奇点就是度数是奇数的顶点)。则此图一定存在欧拉道路。
欧拉回路:图是连通的,且没有奇度的点。
今天先开个头在这,等这段时间忙完了,在继续做风神的题集
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
#include<string>
#include<cstring>
#include<stack>
#include<queue>
#include<vector>
#include<cstdlib>
#define lson (rt<<1),L,M
#define rson (rt<<1|1),M+1,R
#define M ((L+R)>>1)
#define cl(a,b) memset(a,b,sizeof(a));
#define LL long long
#define P pair<int,int>
#define X first
#define Y second
#define pb push_back
#define fread(zcc) freopen(zcc,"r",stdin)
#define fwrite(zcc) freopen(zcc,"w",stdout)
using namespace std;
const int maxn=100005;
const int inf=1<<28;
int deg[maxn];//顶点的度数
bool vis[maxn];
vector<int> G[maxn];
void dfs(int u){//判断图是不是连通的
if(vis[u])return ;
vis[u]=true;
for(int i=0;i<G[u].size();i++){
dfs(G[u][i]);
}
}
int main(){
int n,m;
while(scanf("%d",&n)&&n){
scanf("%d",&m);
for(int i=1;i<=n;i++){
G[i].clear();
deg[i]=0;
vis[i]=false;
}
for(int i=0;i<m;i++){
int x,y;
scanf("%d%d",&x,&y);
deg[x]++;deg[y]++;
G[x].pb(y);
G[y].pb(x);
}
bool ok=true;
for(int i=1;i<=n;i++)if(deg[i]&1){
ok=false;break;
}
dfs(1);
for(int i=1;i<=n;i++)if(!vis[i]){
ok=false;break;
}
if(ok){
puts("1");
}
else {
puts("0");
}
}
return 0;
}
本文深入探讨了欧拉道路和欧拉回路的概念,通过给出的代码实例,展示了如何判断一个图是否具备欧拉路径或欧拉回路的特性,并通过实例分析了连通性和奇点对路径的影响。
&spm=1001.2101.3001.5002&articleId=48194125&d=1&t=3&u=a1666998e7ed41bd90768d1aea9c65d4)
1475

被折叠的 条评论
为什么被折叠?



