제출 #520981

#제출 시각아이디문제언어결과실행 시간메모리
520981nadorbenedekSplit the Attractions (IOI19_split)C++14
0 / 100
58 ms10540 KiB
#include "split.h"
#include <bits/stdc++.h>
using namespace std;

vector<vector<int> > adj;

void dfs(int v, vector<int> &res, int &noch, int id){
    res[v] = id;
    noch--;
    if(noch == 0){
        return;
    }
    for(int edge : adj[v]){
        if(!res[edge]){
            dfs(edge, res, noch, id);
        }
    }
}

vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
	vector<int> res(n, 0);
	vector<pair<int, int> > z = {{a, 1}, {b, 2}, {c, 3}};
	sort(z.begin(), z.end());
	adj.resize(n);
	for(int i = 0; i < p.size(); i++){
        adj[p[i]].push_back(q[i]);
        adj[q[i]].push_back(p[i]);
	}
	int root = 0;
	for(int i = 0; i < n; i++){
        if(adj[i].size() == 1){
            root = i;
            break;
        }
	}
	dfs(root, res, z[1].first, z[1].second);
	for(int i = 0; i < n; i++){
        if(res[i] == 0){
            root = i;
            break;
        }
	}
    dfs(root, res, z[0].first, z[0].second);
    for(int i = 0; i < n; i++){
        if(res[i] == 0){
            res[i] = z[2].second;
        }
    }
	return res;
}

컴파일 시 표준 에러 (stderr) 메시지

split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:25:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |  for(int i = 0; i < p.size(); i++){
      |                 ~~^~~~~~~~~~
#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...