有向图的欧拉路

来源:互联网 发布:伪装者里的汪曼春 知乎 编辑:程序博客网 时间:2024/05/01 17:59

如果是构成欧拉圈的话,条件是无奇点,且各点指向和背离的线数相同.
如果是构成欧拉链的话,条件是恰有两个奇点,两个奇点分别是指向比背离的线数多一条和少一条.其余各点指向和背离的线数相同.
http://www.acmicpc.sdnu.edu.cn/problem/show/1088

#include<iostream>#include<cstdio>#include<vector>using namespace std;int in[1005], out[1005];int n, m;bool ok(){    int s = 0;    for (int i = 1; i <= n; i++)    {        if (in[i] == 0 && out[i] == 0)  return false;        if (in[i] == out[i]) continue;        if (in[i] + 1 == out[i] || in[i] == out[i] + 1)            s++;        else    return false;        if (s > 2)            return false;    }    return true;}int main(){    int u, v;    scanf("%d%d",&n,&m);    while (m--)    {        scanf("%d%d",&u,&v);        out[u]++;        in[v]++;    }    if (ok())        printf("YES\n");    else printf("NO\n");    return 0;}
0 0
原创粉丝点击