제출 #1203107

#제출 시각아이디문제언어결과실행 시간메모리
1203107SpyrosAlivSplit the Attractions (IOI19_split)C++20
11 / 100
51 ms10312 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int n, a, b, c;
vector<vector<int>> g;
vector<int> ord;
vector<bool> vis;

vector<int> find_split(int N, int A, int B, int C, vector<int> p, vector<int> q2) {
    n = N;
    a = A;
    b = B;
    c = C;
    g.resize(n+1);
    int m = p.size();
    for (int i = 0; i < m; i++) {
        p[i]++;
        q2[i]++;
        g[p[i]].push_back(q2[i]);
        g[q2[i]].push_back(p[i]);
    }
    // line
    vis.assign(n+1, false);
    vector<int> val(n, 0);
    queue<int> q;
    q.push(1);
    while (b) {
        int curr = q.front();
        q.pop();
        b--;
        val[curr - 1] = 2;
        vis[curr] = true;
        for (auto next: g[curr]) {
            if (vis[next]) continue;
            q.push(next);
            vis[next] = true;
        }
    }
    for (int i = 0; i < n; i++) {
        if (val[i] == 0) {
            if (a) {
                val[i] = 1;
                a--;
            }
            else {
                val[i] = 3;
            }
        }
    }
    return val;
}
#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...