這個題卡了一上午卡到心態爆炸,卡到欲仙欲死。各種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;
}