UVA-10596
题意:给出若干个路径,求能不能每个路径走一遍,最后回到出发点。
解题思路:判断欧拉回路,要判断图是否联通。
有个坑点 如果全部都是1 1这样指向自己的其实是没有路的。
/*************************************************************************
> File Name: UVA-10596.cpp
> Author: Narsh
>
> Created Time: 2016年07月22日 星期五 10时46分59秒
************************************************************************/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int d[210],map[210][210],n,m,a,b;
bool vis[210];
void dfs(int x) {
vis[x]=true;
for (int i = 0 ; i < n; i++)
if (map[x][i] && !vis[i])
dfs(i);
}
int main() {
while (scanf("%d%d",&n,&m) != EOF) {
memset(d,0,sizeof(d));
memset(map,0,sizeof(map));
memset(vis,false,sizeof(vis));
for (int i = 1; i <= m; i++) {
scanf("%d%d",&a,&b);
if ( a == b) continue;
d[a]++;d[b]++;
map[a][b]=map[b][a]=1;
}
dfs(a);
bool flag=true;
if (m == 0) flag =false;
for (int i = 0; i < n; i++)
if (d[i] % 2 != 0 || (!vis[i] && d[i])) {
flag=false;
break;
}
if (flag) printf("Possible\n");
else printf("Not Possible\n");
}
}