欧拉回路基础 HDU1878 欧拉回路||并差集
欧拉回路
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10544 Accepted Submission(s): 3845
束。
1 2
1 3
2 3
3 2
1 2
2 3
0
0
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
int map[maxn][maxn];
bool vis[maxn];
int indegree[maxn],father[maxn];
int n,m;
void init(){
for(int i=;i<=n;i++)
father[i]=i;
}
int find(int u){
if(father[u]!=u)
father[u]=find(father[u]);
return father[u];
}
void Union(int x,int y){
int t1=find(x);
int t2=find(y);
if(t1!=t2)
father[t1]=t2;
}
int main(){ while(scanf("%d",&n)&&n){
init();
memset(map,,sizeof(map));
memset(indegree,,sizeof(indegree));
memset(vis,false,sizeof(vis));
scanf("%d",&m);
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
map[u][v]=map[v][u]=;
Union(u,v);
indegree[u]++;
indegree[v]++;
}
bool flag=false;
int sum=;
for(int i=;i<=n;i++){
if(father[i]==i){
sum++;
}
if(indegree[i]%==){
flag=true;
break;
}
} if(flag==true||sum!=)
printf("0\n");
else
printf("1\n"); }
return ;
}
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
int map[maxn][maxn];
bool vis[maxn];
int indegree[maxn];
int n,m;
void dfs(int u){
vis[u]=true;
for(int i=;i<=n;i++)
if(!vis[i]&&map[u][i])
dfs(i);
return ;
}
int main(){
while(scanf("%d",&n)&&n){
scanf("%d",&m);
memset(map,,sizeof(map));
memset(vis,false,sizeof(vis));
memset(indegree,,sizeof(indegree));
for(int i=;i<m;i++){
int u,v;
scanf("%d%d",&u,&v);
indegree[u]++;
indegree[v]++;
map[u][v]=map[v][u]=;
} dfs();
int i;
for( i=;i<=n;i++){
if(!vis[i]||indegree[i]%==)
break;
}
if(i>n)
printf("1\n");
else
printf("0\n");
}
return ;
}
//本题主要考察欧拉回路的两个充要条件:1.联通图 2.顶点度数都为偶数 (两个条件缺一不可) #include<stdio.h>
#include<string.h> int graph[][]; //采用邻接矩阵存储图
int visit[]; //在遍历时标记该点是否被访问过
int degree[]; //存储节点的度 void DFS(int v, int n) { //深度优先遍历,递归
visit[v] = ;
for(int i=; i<=n; i++)
if(graph[v][i] && visit[i]==)
DFS(i,n);
} int main() {
//freopen("in.txt","r",stdin);
int n, m;
while(scanf("%d %d",&n,&m)!=EOF && n) {
memset(graph,,sizeof(graph)); //清零
memset(visit,,sizeof(visit));
memset(degree,,sizeof(degree));
int a, b, i;
int flag = ; //标记是否存在欧拉回路
for(i=; i<m; i++) {
scanf("%d %d",&a,&b);
graph[a][b] = graph[b][a] = ; //"1"表示两点属于邻接关系
degree[a]++; degree[b]++;
}
DFS(,n);
for(i=; i<=n; i++) {
if(visit[i] == ) {
flag = ; //若有点未曾被访问,即一次深度遍历有未访问的点,则不存在欧拉回路
break;
}
if(degree[i] % != ) {
flag = ; //若有点的度不是偶数,则不存在欧拉回路
break;
}
}
if(flag)
printf("1\n");
else
printf("0\n");
} return ;
}
欧拉回路基础 HDU1878 欧拉回路||并差集的更多相关文章
- HDU1878 欧拉回路 - from lanshui_Yang
Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路? Input 测试输入包含若干测试用例.每个 ...
- HDU-1878 欧拉回路 欧拉回路
题目链接:https://cn.vjudge.net/problem/HDU-1878 题意 中文题,而且就是单纯的欧拉回路 思路 判断连通图 用并查集会很好,bfs亦可 一时脑抽用bfs过了这个题, ...
- hdu1878 欧拉回路
//Accepted 1240 KB 250 ms //水题 欧拉回路 //连通+节点度均为偶数 #include <cstdio> #include <cstring> #i ...
- uva 10054 The Necklace 拼项链 欧拉回路基础应用
昨天做了道水题,今天这题是比较水的应用. 给出n个项链的珠子,珠子的两端有两种颜色,项链上相邻的珠子要颜色匹配,判断能不能拼凑成一天项链. 是挺水的,但是一开始我把整个项链看成一个点,然后用dfs去找 ...
- Uva 10596 - Morning Walk 欧拉回路基础水题 并查集实现
题目给出图,要求判断不能一遍走完所有边,也就是无向图,题目分类是分欧拉回路,但其实只要判断度数就行了. 一开始以为只要判断度数就可以了,交了一发WA了.听别人说要先判断是否是联通图,于是用并查集并一起 ...
- HDU1878 欧拉回路---(并查集+图论性质)
http://acm.hdu.edu.cn/showproblem.php?pid=1878 欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- hdu1878欧拉回路(DFS+欧拉回路)
欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- POJ 1300 最基础的欧拉回路问题
题目大意: 从0~n-1编号的房间,从一个起点开始最后到达0号房间,每经过一扇门就关上,问最后能否通过所有门且到达0号房间 我觉得这道题的输入输出格式是我第一次遇到,所以在sscanf上也看了很久 每 ...
- HDU-1878 欧拉回路(并查集,欧拉回路性质)
欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
随机推荐
- vue登录权限
登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到cookie中,保证刷新页面后能记住用户登录状态),前端会根 ...
- 在Drupal7中创建web接口
Services 模块允许您从一个主要模块后端配置和管理区域启用您 Drupal 站点上自定义构建的内容服务器和服务.该模块中包含的服务允许您调用内容,从 Drupal 的默认和分配的 File.Co ...
- 优化你的java代码性能
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子:import java.util. ...
- grep过滤目录或文件方法
在使用grep在指定目录下查找包含指定字符串的文件是,我们想过滤(即不递归查询指定目录)时!可以使用 –exclude-dir 参数 单个目录实例 搜索.目录但不搜索在.目录下的.svg目录中包含&q ...
- PAT 乙级 1044
题目 题目地址:PAT 乙级 1044 思路 简单的进制转化问题,根据题意进行相应的进制转化即可,因为题目已经划定了数据的求解范围,甚至连进制转化中的循环都不需要,进行简单计算就可以得出结果: 但本题 ...
- Redis学习笔记(三)
一.数据备份与恢复 数据备份: localhost:> save OK 该命令会在redis的安装目录中创建文件dump.rdb,并把数据保存在该文件中 查看redis的安装目录: localh ...
- JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)
470. [NOIP2013模拟联考8]最短路(path) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码
题记: 11月14日早晨8点,人人网发布公告,宣布人人公司将人人网社交平台业务相关资产以2000万美元的现金加4000万美元的股票对价出售予北京多牛传媒,自此,人人公司将专注于境内的二手车业务和在美国 ...
- 谭浩强C第四版(p141)16.输出以下图案
运行结果: * *** ***** ******* ***** *** * Press any key to continue #include<stdio.h> int main() { ...
- Codeforces Round #435 (Div. 2) B (二分图) C(构造)
B. Mahmoud and Ehab and the bipartiteness time limit per test 2 seconds memory limit per test 256 me ...