제출 #244972

#제출 시각아이디문제언어결과실행 시간메모리
244972crossing0verSplit the Attractions (IOI19_split)C++17
11 / 100
131 ms13688 KiB
#include<bits/stdc++.h> #define vi vector<int> #define pb push_back #ifndef local #include "split.h" #endif using namespace std; const int MXN = 1e5 +5; int n,a,b,c,m; vector<int> adj[MXN]; vi case1() { vector<bool> vis(n); vis[0] = 1; queue<int> q; set<int> sec; int cnt = b; q.push(0); while(!q.empty() && cnt) { cnt--; int v = q.front(); sec.insert(v); q.pop(); for (int i :adj[v]) { if (!vis[i]) { vis[i] = 1; q.push(i); } } } vector<int> ans(n); for (int i : sec) ans[i] = 2; for (int i = 0,flag = 0; i < n; i++) { if (sec.count(i)) continue; if (flag == 0) flag = 1, ans[i] = 1; else ans[i] = 3; } return ans; } vector<int> find_split(int n1, int a1, int b1, int c1, vector<int> p, vector<int> q) { n = n1,a = a1,b=b1,c=c1; m = p.size(); for (int i = 0;i < m; i++) { adj[p[i]].pb(q[i]); adj[q[i]].pb(p[i]); } if (a == 1) return case1(); return vi (); }
#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...