이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <cstdio>
#include <cassert>
using namespace std;
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> G[100005];
vector<int> v,sts,v2;
ll pl=0, temp;
ll dfs(ll node,ll Padre)
{
if(v2[node]!=0) return 0;
v2[node]=1;
sts[node]=1;
for(auto i:G[node])
{
if(i!=Padre)
sts[node]+=dfs(i,node);
}
if(sts[node]>=temp&&pl==0)
{
pl=1;
temp=node;
}
return sts[node];
}
void fill(ll node, ll c, ll color)
{
queue<ll> q;
v[node]=color;c--;
q.push(node);
while(!q.empty())
{
for(auto i:G[q.front()])
{
if(sts[i]<sts[q.front()]&&c>0&&v[i]==0)
{
v[i]=color;
c--;
q.push(node);
}
}
q.pop();
}
}
void fill2(ll node, ll c, ll color)
{
queue<ll> q;
v[node]=color;c--;
q.push(node);
while(!q.empty())
{
for(auto i:G[q.front()])
{
if(c>0&&v[i]==0)
{
v[i]=color;
c--;
q.push(i);
}
}
q.pop();
}
}
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
for(int i=0; i<p.size(); i++)
{
G[p[i]].push_back(q[i]);
G[q[i]].push_back(p[i]);
}
pair<ll,ll> cad[]={{a,1},{b,2},{c,3}}; sort(cad,cad+3); temp=cad[0].first;
v.assign(n,0); sts.assign(n,0),v2.assign(n,0);
dfs(0,-1);
if(n-sts[temp]<cad[0].first)
{
return v;
}
if(sts[temp]*2>n)
{
swap(cad[0],cad[1]);
}
fill(temp,cad[0].first,cad[0].second);
fill2(0,cad[1].first,cad[1].second);
for(int i=0; i<n; i++)
{
if(v[i]==0)
{
v[i]=cad[2].second;
}
}
return v;
}
컴파일 시 표준 에러 (stderr) 메시지
split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:68:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
68 | for(int i=0; i<p.size(); i++)
| ~^~~~~~~~~
# | 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... |