もろ始点・終点が決まったケーニヒスベルクの橋渡りだった。
注意しなきゃいけないのはスタートまたはゴールから伸びている辺の数が1本以外のケースもあるということ。
適当実装
#include <iostream> using namespace std; int main(){ int a,b; while(1){ a=-1; int data[100]={0}; while(cin >> a >> b && a || b){ a--;b--; data[a]++; data[b]++; } if(a==-1)return 0; bool flag = false; /*スタート・ゴールが奇数点じゃない時点で試合終了*/ if(data[0]%2==0 || data[1]%2==0)flag = true; for(int i=2;i<100;i++){ /*スタートとゴール以外に奇数点があれば*/ if(data[i]%2==1 && data[i]){ flag = true; } } cout << (flag?"NG":"OK") << endl; } }