|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 可里@天意社区 于 2013-5-8 18:53 编辑
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;
vector<int>::iterator it;
bool visit[1001];
vector<int> vec[1001];
void DFS(int i)
{
visit[i]=1;
for(it=vec[i].begin();it!=vec[i].end();it++)
if(visit[*it]==0)
DFS(*it);
}
int main()
{
int v;
cin>>v;
while(v--)
{
int P,Q;//P顶点数目,Q边数目
cin>>P>>Q;
for(int i=1;i<=P;i++)
{
vec[i].clear();
visit[i]=0;
}
//memset(visit,0,sizeof(visit));
for(int i=0;i<Q;i++)//邻接表
{
int a,b;
cin>>a>>b;
vec[a].push_back(b);
vec.push_back(a);
}
//判断是否是欧拉回路
DFS(1);
int m=0;
for(int i=1;i<=P;i++)
if(visit[i]==0)
m++;
if(m)
cout<<"NO"<<endl;
else{
int k=0;
for(int i=1;i<=P;i++)
if(vec.size()%2!=0)
k++;
if(k==2||k==0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
}
[/i][/i][/i][/i][/i][/i] |
|