# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
805720 | vjudge1 | Split the Attractions (IOI19_split) | C++17 | 41 ms | 9648 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "split.h"
#include "bits/stdc++.h"
using namespace std;
vector<int> tama_o;
int actual = 0;
vector<int> respuesta;
vector< vector<int> > lista_de_adyacencia;
vector<int> visitado;
void DFS(int nodo){
visitado[nodo] = 1;
respuesta[nodo] = actual + 1;
tama_o[actual]--;
if(tama_o[actual] == 0) return;
int _ndice = 0;
while(_ndice < lista_de_adyacencia[nodo].size()){
if(!visitado[lista_de_adyacencia[nodo][_ndice]]) DFS(lista_de_adyacencia[nodo][_ndice]);
_ndice++;
}
}
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q){
tama_o = {a, b, c};
lista_de_adyacencia.assign(n, vector<int>());
int _ndice = 0;
while(_ndice < p.size()){
lista_de_adyacencia[p[_ndice]].push_back(q[_ndice]);
lista_de_adyacencia[q[_ndice]].push_back(p[_ndice]);
_ndice++;
}
visitado.assign(n, 0);
respuesta.assign(n, -1);
_ndice = 0;
while(lista_de_adyacencia[_ndice].size() != 1) _ndice++;
DFS(_ndice);
_ndice = 0;
while(lista_de_adyacencia[_ndice].size() != 1 and visitado[_ndice]) _ndice++;
actual = 2;
DFS(_ndice);
_ndice = 0;
while(_ndice < respuesta.size()){
if(respuesta[_ndice] == -1) respuesta[_ndice] = 2;
_ndice++;
}
return respuesta;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |