제출 #1022655

#제출 시각아이디문제언어결과실행 시간메모리
1022655HappyCapybaraSplit the Attractions (IOI19_split)C++17
18 / 100
57 ms12624 KiB
#include "split.h" #include<bits/stdc++.h> using namespace std; vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q){ int m = p.size(); vector<vector<int>> g(n); for (int i=0; i<m; i++){ g[p[i]].push_back(q[i]); g[q[i]].push_back(p[i]); } vector<int> res(n, 3); if (a > 1){ int now = 0; for (int i=0; i<n; i++){ if (g[i].size() == 1) now = i; } int i = 0; int prev = -1; while (i < a+b){ if (i < a) res[now] = 1; else res[now] = 2; i++; if (g[now][0] != prev){ prev = now; now = g[prev][0]; } else { prev = now; now = g[prev][1]; } } return res; } vector<bool> seen(n, false); int i = 0; queue<int> qu; qu.push(0); while (i<b){ int cur = qu.front(); qu.pop(); if (seen[cur]) continue; seen[cur] = true; res[cur] = 2; i++; for (int next : g[cur]) qu.push(next); } for (int j=0; j<n; j++){ if (res[j] == 3){ res[j] = 1; break; } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...