UVa 10596: Morning Walk
2013-07-29 13:58
453 查看
这题需要判断两个地方:所有点是否在同一个集合中以及各点的度是否均为偶数(即是否可以构成欧拉回路)。
用dfs得到一个连通分量中点的个数,判断是否与总的点数目相等即可知道是否所有点均在一个连通分量中。
我的代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;
int degree[200];
int adj[200][200];
int visit[200];
int N,R;
void dfs(int n, int &c)
{
c++;
visit
=1;
for(int i=0; i<N; i++)
{
if(adj[i]
&& !visit[i])
{
dfs(i,c);
}
}
return ;
}
int main()
{
int ta,tb;
while(cin >> N >> R)
{
memset(adj,0,sizeof(adj));
memset(degree,0,sizeof(degree));
memset(visit,0,sizeof(visit));
for(int i=0; i<R; i++)
{
cin >> ta >> tb;
adj[ta][tb]=adj[tb][ta]=1;
degree[ta]++;
degree[tb]++;
}
int ok=1,count=0;
for(int i=0; i<N; i++)
{
if(degree[i]%2==1) { ok=0; break;}
}
if(!ok) cout << "Not Possible\n";
else
{
dfs(0,count); //cout << count << endl;
if(count != N) cout << "Not Possible\n";
else cout << "Possible\n";
}
}
return 0;
}
用dfs得到一个连通分量中点的个数,判断是否与总的点数目相等即可知道是否所有点均在一个连通分量中。
我的代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;
int degree[200];
int adj[200][200];
int visit[200];
int N,R;
void dfs(int n, int &c)
{
c++;
visit
=1;
for(int i=0; i<N; i++)
{
if(adj[i]
&& !visit[i])
{
dfs(i,c);
}
}
return ;
}
int main()
{
int ta,tb;
while(cin >> N >> R)
{
memset(adj,0,sizeof(adj));
memset(degree,0,sizeof(degree));
memset(visit,0,sizeof(visit));
for(int i=0; i<R; i++)
{
cin >> ta >> tb;
adj[ta][tb]=adj[tb][ta]=1;
degree[ta]++;
degree[tb]++;
}
int ok=1,count=0;
for(int i=0; i<N; i++)
{
if(degree[i]%2==1) { ok=0; break;}
}
if(!ok) cout << "Not Possible\n";
else
{
dfs(0,count); //cout << count << endl;
if(count != N) cout << "Not Possible\n";
else cout << "Possible\n";
}
}
return 0;
}
相关文章推荐
- Uva 10596 - Morning Walk
- UVA 10596 Morning Walk
- UVa 10596 - Morning Walk 有向图的欧拉回路
- UVA - 10596 Morning Walk
- UVa 10596 - Morning Walk
- uva 10596 - Morning Walk
- UVA10596- Morning Walk
- UVA 10596 Morning Walk
- uva 10596 Morning Walk
- UVA - 10596 Morning Walk (欧拉回路+dfs)
- UVa 10596 - Morning Walk
- UVa10596 - Morning Walk(并查集)
- uva 10596 Morning Walk
- UVA 10596 Morning Walk[无向图的欧拉回路]
- uva 10596 - Morning Walk
- UVA 10596 - Morning Walk
- UVA - 10596 - Morning Walk (欧拉回路!并查集判断回路)
- UVa 10596 - Morning Walk
- UVa 10596 - Morning Walk(欧拉回路)
- UVA 10596 Morning Walk(欧拉路)