判断图的连通性+一笔画问题(NYOJ 42 一笔画问题)
来源:互联网 发布:淘宝营销 编辑:程序博客网 时间:2024/04/28 15:45
我感觉判断图的连通性可以用BFS,也可以用DFS,但是感觉DFS快些(没试过BFS),所以只写了DFS。。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<time.h>
using namespace std;
int s[1100][1100],v[1100],c[1100];//s表示图的连线情况,v表示点是否可联通,c表示点的度
int ans,q,p,sum;
void dfs(int d)
{
if(sum==p)
{
ans=1;
}
else
{
int i;
for(i=1;i<=p;i++)
{
if(s[d][i]==0&&v[i]==0)
{
v[i]=1;
sum++;
dfs(i);
}
}
}
}
int main()
{
int t,i,j,a,b,ou,ji;
cin>>t;
while(t--)
{
cin>>p>>q;
memset(s,-1,sizeof(s));
memset(c,0,sizeof(c));
for(i=0;i<q;i++)
{
scanf("%d%d",&a,&b);
c[a]++;
c[b]++;
s[a][b]=0;
s[b][a]=0;
}
ans=0;
sum=1;
memset(v,0,sizeof(v));
v[1]=1;
dfs(1);
if(ans==0)
{
cout<<"No"<<endl;
}
else
{
ou=ji=0;//判断是否可以一笔画:点的度全是偶数或者奇数度的点只有两个就行,其他都不行(有偶数个奇点除以2可以算出需要几画)
for(i=1;i<=p;i++)
{
if(c[i]%2==0)
{
ou++;
}
else
{
ji++;
}
}
if(ji==0||ji==2)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
}
return 0;
}
- 判断图的连通性+一笔画问题(NYOJ 42 一笔画问题)
- NYOJ 题目42 一笔画问题(欧拉路,图的连通性)
- 一笔画问题-判断连通性+欧拉图
- NYOJ 42 一笔画问题
- NYOJ 42 一笔画问题
- NYOJ 42一笔画问题
- NYOJ 42 一笔画问题
- NYOJ 42 一笔画问题
- nyoj-42-一笔画问题
- nyoj,42,一笔画问题
- Nyoj 42 一笔画问题
- NYOJ-42 一笔画问题
- NYOJ-42 一笔画问题
- NYOJ 42 一笔画问题
- nyoj 42 一笔画问题
- nyoj 42 一笔画问题
- nyoj 42 一笔画问题
- nyoj 42 一笔画问题
- 2084 数塔问题
- 尝试在ie8上实现纯css的圆角
- opencv中图像数据结构总结
- servlet下使用c标签分页
- Java SE 第十一讲(面向对象之封装) 续二
- 判断图的连通性+一笔画问题(NYOJ 42 一笔画问题)
- C/C++语言实现十进制正整数转化为2-16进制的数并输出
- /etc/init.d/functions详解
- 信息安全实验:对称加密算法DES之DES_ecb_encrypt()
- LeetCode OJ 之 Valid Sudoku (数独判断)
- 递归练习之求平方根
- c++位运算
- Java 中十进制和十六进制的相互转换
- vim单词高亮的功能