제출 #442382

#제출 시각아이디문제언어결과실행 시간메모리
442382AmineTrabelsiSplit the Attractions (IOI19_split)C++14
18 / 100
116 ms16520 KiB
#include "split.h"
#include <bits/stdc++.h>
using namespace std;
const int Mx = 2e5+5;
int N,M;
vector<int> order;
vector<int> gr[Mx];
bool vis[Mx];
void get_order(int node){
    vis[node] = 1;
    order.push_back(node);
    for(auto i:gr[node]){
        if(!vis[i])
        get_order(i);
    }
}
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
    // subtask 1
    N = n;
    M = p.size();
    for(int i=0;i<M;i++){
        gr[p[i]].push_back(q[i]);
        gr[q[i]].push_back(p[i]);
    }
    vector<int> res(N,0);
    bool done = 0;
    for(int i=0;i<n;i++){
        if(gr[i].size() == 1){
            get_order(i);
            done = 1;
        }
    }
    if(!done)get_order(0); // cycle
    for(int i=0;i<a;i++){
        res[order[i]] = 1;
    }
    for(int i=0;i<b;i++){
        res[order[i+a]] = 2;
    }
    for(int i=0;i<c;i++){
        res[order[i+a+b]] = 3;
    }
    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...