UVa 11586 : Train Tracks
UVa演習 2014/6/8 (日) 問2
問題リンク : http://uva.onlinejudge.org/external/115/11586.html
問題概要:
MM,MF,FM,FFの4種類のピースがあり、FとM(またはその逆)をつなげることができる
ただし同じピースのFとMはつなげられない
与えられたピースを全てつかってループをつくることができるだろうか?
解法:
Fの数とMの数を数える
一緒でかつピースが2つ以上あるのであればループをつくれる
そうでない場合はつくれない
コード:
#include<bits/stdc++.h> #define REP(i,s,n) for(int i=s;i<n;i++) #define rep(i,n) REP(i,0,n) using namespace std; const string YES = "LOOP", NO = "NO LOOP"; int main(){ int T; cin >> T; cin.ignore(); while( T-- ){ int FM[2] = {}; string line; getline(cin,line); stringstream ss; ss << line; while(!(ss>>line).fail()) { FM[line[0]=='M']++; FM[line[1]=='M']++; } if( FM[0] == FM[1] && FM[0] == 1 ) cout << NO << endl; else cout << ((FM[0]==FM[1])?YES:NO) << endl; } return 0; }