这个题卡了一上午卡到心态爆炸,卡到欲仙欲死。各种bug蜜汁出现。一边一遍的调试,忽然发现思考成熟是多么的重要!最后是一个短路效应的问题,怀疑人生!
这个题就是统计出度和入度,就是建图有点麻烦,其实也不算太麻烦了。对于无向图而言就是
判断是否满足没有奇度顶点,或者奇度定点只有两个,并且这两个奇度顶点其中一个是0,另一个是起点。
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
const int MAXN = 1000;
char k[MAXN];
int ans[30];
int sum;
void f(int cnt)
{
char s[1000];
char temp;
int t = 0;
while(temp = getchar())
{
if(temp == '\n')
break;
if(temp == 'E')
{
for(int r = 0; r <= 1;++r)
getchar();
break;
}
s[t++] = temp;
if(temp != ' ')
{
ans[cnt]++;
ans[temp - 48]++;
sum++;
}
}
return ;
}
int main()
{
string s;
while(cin >> s && s != "ENDOFINPUT")
{
int m,n;
sum = 0;
memset(k,0,sizeof(k));
memset(ans,0,sizeof(ans));
cin >> m >> n;
getchar();
for(int i = 0;i <= n; ++i)
{
f(i);
}
int t = 0;
int flag = 1;
int temp[5000];
for(int i = 0;i <= n - 1; ++i)
{
if(ans[i] % 2)
{
temp[t++] = i;
}
}
if(t == 0 && m == 0)
{
cout << "YES" << ' ' << sum << endl;
}
else
{
if(t == 2 && (temp[0] == m && temp[1] == 0) || (temp[0] == 0 && temp[1] == m))
{
cout << "YES" << ' ' << sum << endl;
}
else
{
cout << "NO" << endl;
}
}
}
return 0;
}