欧拉图,哈密顿图

来源:互联网 发布:淘宝图片护盾破解方法 编辑:程序博客网 时间:2024/06/09 23:34

两图的讲解:http://www.doc88.com/p-7532430559335.html

欧拉图:

半欧拉图:

哈密顿图:

半哈密顿图:

一笔画问题:http://acm.nyist.net/JudgeOnline/problem.php?pid=42

AC代码:

#include<iostream>//c++#include<cmath>//数学公式#include<cstdlib>//malloc#include<cstring>#include<string>#include<cstdio>//输入输出#include<algorithm>//快排#include<queue>//队列#include<functional>//优先队列#include<stack>//栈#include<vector>//容器#include<map>//地图  if continueusing namespace std;int w[2100],du[2100];int n;//string s;//queue<int> q;//priority_queue<int> q;//大到小//priority_queue<int, vector<int>,greater<int> >q;//小到大int dfs(int a,int b){    int i,c=w[a];    for(i=1;i<=n;i++)    {        if(w[i]==c) w[i]=w[b];    }}int main(){int i,j,k,a,b,c;int text,m;cin>>text;while(text--){        memset(du,0,sizeof(du));        cin>>n>>m;        for(i=1;i<=n;i++) w[i]=i;        for(i=1;i<=m;i++)        {            cin>>a>>b;            if(w[a]!=w[b]) dfs(a,b);            du[a]++,du[b]++;        }        int ans=0;        for(i=1;i<=n;i++) if(du[i]%2) ans++;        if(ans>2) cout<<"No"<<endl;        else        {            for(i=2;i<=n;i++) if(w[i]!=w[i-1]) break;            if(i-1==n) cout<<"Yes"<<endl;            else cout<<"No"<<endl;        }}return 0;}


0 0
原创粉丝点击