码迷,mamicode.com
首页 > 其他好文 > 详细

uva 10596 Morning Walk(欧拉回路)

时间:2015-07-24 10:45:58      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

这道题是神坑啊,花了我将近3个小时,本来敲的挺顺的,交上去就是wa,坑点真坑,原来是有的路口交叉点可以没有

路通向它,无语,没有路通向也可以叫交叉点。。。。以后一定得考虑多种情况,用了bfs(vector做的)和dfs判断

的是否连通,判断连通之后只需要再判断是否都有偶数个度就ok了,坑,真坑。

bfs代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<queue>
using namespace std;
vector<int>map[10005];
int d[10005];
int visit[10005];
int m,n;
void bfs(int x)
{
	queue<int>que;
	que.push(x);
	visit[x] = 1;
	while(!que.empty())
	{
		int y = que.front();
		que.pop();
		
		for(int i=0; i<map[y].size(); i++)
		{
			if(!visit[map[y][i]])
			{
				visit[map[y][i]] = 1;
				que.push(map[y][i]);
			}
		}
	}
	return;
}
int main()
{
	int i,a,b;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		for(i=0; i<n; i++)
			map[i].clear();
		memset(visit,0,sizeof(visit));
		memset(d,0,sizeof(d));
		for(i=0; i<m; i++)
		{
			scanf("%d%d",&a,&b);
			d[a]++;
			d[b]++;
			map[a].push_back(b);
			map[b].push_back(a); 
		}
		bfs(0);
		int flag = 0;
		for(i=0; i<n; i++)
		{
			if(d[i]!=0)
			if(!visit[i]||d[i]%2!=0)
			{
				flag = 1;
				break;
			}
		}
		if(m==0)
			flag = 1;
		if(flag)
			puts("Not Possible");
		else
			puts("Possible");
	}
}

dfs代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<queue>
int map[205][205];
int d[205];
int visit[205];
int m,n;
void dfs(int x)
{
	visit[x] = 1;
	for(int i=0; i<n; i++)
	{
		if(!visit[i]&&map[x][i]==1)
		{
		//	map[x][i] = 0;
			dfs(i);
		}
	}
	return;
}
int main()
{
	int i,a,b;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		memset(map,0,sizeof(map));
		memset(visit,0,sizeof(visit));
		memset(d,0,sizeof(d));
		for(i=0; i<m; i++)
		{
			scanf("%d%d",&a,&b);
			d[a]++;
			d[b]++;
			map[a][b] = map[b][a] = 1;
		}
		dfs(0);
		int flag = 0;
		for(i=0; i<n; i++)
		{
			if(d[i]!=0)
			if(!visit[i]||(d[i]%2==1))
			{
				flag = 1;
				break;
			}
		}
		if (n==0){  
            flag=1;  
        }  
		if(flag)
			puts("Not Possible");
		else
			puts("Possible");
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

uva 10596 Morning Walk(欧拉回路)

标签:

原文地址:http://blog.csdn.net/sinat_22659021/article/details/47036503

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!