이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "split.h"
#include<iostream>
#include<vector>
using namespace std;
int N,rm,v1,v2,c1[4],c2[4],d=-1,e=0,sz[100000],pd[100000];
vector<int>res,ad[100000];
void dfs(int u,int p=-1){
pd[u]=p;
sz[u]=1;
for(auto v:ad[u])if(v!=p){
dfs(v,u);
sz[u]+=sz[v];
}
if(v2<=sz[u]&&v1<=N-sz[u])d=u,e=2;
if(v1<=sz[u]&&v2<=N-sz[u])d=u,e=1;
}
void fil(int u,int p,int vl){
res[u]=vl;
c2[vl]++;
for(auto v:ad[u])if(v!=p){
if(c2[vl]==c1[vl])return;
fil(v,u,vl);
}
}
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
N=n,rm=6;
c1[1]=a,c1[2]=b,c1[3]=c;
v1=min(min(a,b),c);
v2=a+b+c-v1-max(max(a,b),c);
for(int i=0;i<n;i++)res.push_back(0);
for(int i=0;i<p.size();i++)
ad[p[i]].push_back(q[i]),
ad[q[i]].push_back(p[i]);
if(p.size()==n-1){
dfs(0);
cout<<d<<" "<<e<<'\n';
if(d!=-1){
if(e==1){
if(v1==a)fil(d,pd[d],1),rm-=1;
if(v1==b)fil(d,pd[d],2),rm-=2;
if(v1==c)fil(d,pd[d],3),rm-=3;
if(v2==a)fil(pd[d],d,1),rm-=1;
if(v2==b)fil(pd[d],d,2),rm-=2;
if(v2==c)fil(pd[d],d,3),rm-=3;
}else{
if(v2==a)fil(d,pd[d],1),rm-=1;
if(v2==b)fil(d,pd[d],2),rm-=2;
if(v2==c)fil(d,pd[d],3),rm-=3;
if(v1==a)fil(pd[d],d,1),rm-=1;
if(v1==b)fil(pd[d],d,2),rm-=2;
if(v1==c)fil(pd[d],d,3),rm-=3;
}
for(int i=0;i<n;i++)if(res[i]==0)res[i]=rm;
}
}else if(a==1){
fil(0,-1,2);
for(int i=0;i<n;i++)if(res[i]==0){
if(c2[1]==0){
c2[1]=1;
res[i]=1;
}else res[i]=3;
}
}
return res;
}
컴파일 시 표준 에러 (stderr) 메시지
split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:35:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
35 | for(int i=0;i<p.size();i++)
| ~^~~~~~~~~
split.cpp:38:13: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
38 | if(p.size()==n-1){
| ~~~~~~~~^~~~~
# | 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... |