例题6.4.4

来源:互联网 发布:ipadair2怎么卸载软件 编辑:程序博客网 时间:2024/05/22 11:53

欧拉回路

#include <iostream>#include <fstream>using namespace std;ifstream fin("in.txt");#define LEN 1001bool visited[LEN];bool arc[LEN][LEN];int degree[LEN];int n,m;void dfs(int v)         //深度优先遍历{    visited[v]=true;    for(int i=1;i<=n;i++)    {        if(!visited[i] && arc[v][i])        {            dfs(i);        }    }}bool isConnected()        //查看遍历后结果{    for(int i=1;i<=n;i++)    {        if(!visited[i]){return false;}    }    return true;}bool isCircuit()        //通过度数是否为偶数判断欧拉回路{    for(int i=1;i<=n;i++)    {        if(degree[i]%2){return false;}    }    return true;}int main(){    int i,p,q;    while(1)    {        memset(visited,0,LEN);        memset(arc,0,sizeof(bool)*LEN*LEN);        memset(degree,0,sizeof(int)*LEN);        fin>>n>>m;        if(n==0)break;        for(i=0;i<m;i++)        {            fin>>p>>q;            degree[p]++;degree[q]++;            arc[p][q]=arc[q][p]=true;        }        dfs(1);        if(!isConnected()){cout<<0<<endl;}        else{            if(isCircuit())cout<<1<<endl;            else cout<<0<<endl;            }    }    return 0;}


 

原创粉丝点击