Uva-10596

Uva-10596题解

Posted by 顾小五 on September 8, 2018

大致题意

题目原文

大概就是能不能够沿着所有的边走一遍并且走回原点

第一行的第一个输入是n个点,第二个输入是m条边,接下来m行就是边了

解题思路

第一眼看完题,感觉蛮简单的,

看题意就知道是求是否存在欧拉回路,即是否为欧拉图

欧拉图的充要条件是

一个无向连通图如果度数均为偶数则为欧拉图

所以这题的大致解题思路就是先看每个点的度数是否为偶数,然后在看这个图是不是连通图

判断连通图的话就是用dfs


void euler(int u) {
	visit[u] = true;	//返问过的节点设置为true
	for (int i = 0; i < n; i++) {
		if (!visit[i] && maps[u][i] == 1) {		//当前边的终点节点未返问过,则继续往下遍历
			maps[u][i] = maps[i][u] = 0;
			euler(i);
		}
	}
}

如果这样简单的话,这大概就不是10+WA了(╯‵□′)╯︵┻━┻

这个题思路是这样的,但是要注意的小点还蛮多的

  1. 就是关于存在孤立的点,也是可以的

    就是输入样例

    10 2

    9 8

    8 9

    输出应该是 Possible

  2. 就是如果第一个输入N小于2时,M小于2时均输出Not Possible

完整代码

ps:这题10+WA真是真实心态炸裂,而且还有几发非常弱智的TLE….心塞