将无向图用矩阵的方式输入,判断其是欧拉图、半欧拉图还是普通图
输入:
4
0 1 1 0
1 0 0 1
1 0 0 1
0 1 1 0
输出:
欧拉图
输入:
4
0 1 1 1
1 0 0 1
1 0 0 1
1 1 1 0
输出:
半欧拉图
输入:
8
0 1 1 1 0 0 0 0
1 0 0 1 0 0 0 0
1 0 0 1 0 0 0 0
1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 0
0 0 0 0 1 0 1 1
0 0 0 0 1 1 0 1
0 0 0 0 0 1 1 0
输出:
啥也不是
Code
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool include(int i,vector<int> c)
{
for(int j=0;j<c.size();j++)
{
if(c[j]==i)
{
return 1;
}
}
return 0;
}
int main()
{
vector<int> c;
int a[15][15];
int b[15]={0};
int n,m;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]==1)
{
b[i]++;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==1)
{
if(i==1)
{
c.push_back(j);
}
else if(include(i,c))
{
int m=0;
for(m=0;m<c.size();m++)
{
if(c[m]==j)
break;
}
if(m==c.size())
c.push_back(j);
}
}
}
}
int ji=0;
for(int i=1;i<=9;i++)
{
if(b[i]&1)
ji++;
}
if(c.size()==n)
{
if(ji==0)
printf("欧拉图\n");
else if(ji==2)
printf("半欧拉图\n");
}
else
printf("啥也不是\n");
return 0;
}