AtCoder Beginner Contest 068 Cat Snuke and a Voyage
考察
1からNを結ぶ点をxとすると、1からxとxからNの辺ができたときにPOSSIBLEになる。
つまりxを明らかにすればいい。
コード
#include <iostream> #include <algorithm> #define ll long long using namespace std; bool s[200050] = {}; bool t[200050] = {}; int main() { ll n, m; cin >> n >> m; for (int i = 0; i < m; i++) { ll a, b; cin >> a >> b; if (a == 1) { t[b] = true; } if (b == n) { s[a] = true; } } for (int i = 0; i < 200050; i++) { if (s[i] && t[i]) { cout << "POSSIBLE" << endl; return 0; } } cout << "IMPOSSIBLE" << endl; return 0; }
boolの配列を用いて、両方trueにする発想がなかった。
とても好きな実装の仕方。