# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
388193 | Supersonic | 기지국 (IOI20_stations) | C++14 | 823 ms | 716 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
int c[1001];set<int> a[1001];int l[1001];int dp=0;
int ch(int k,int p){
dp++;if(dp>5000)exit(1);
int t=a[k].size()-1;for(auto i:a[k])if(i!=p)t+=ch(i,k);
//if(k==0)for(auto i:a[k])cerr<<i<<'=';cout<<endl;
if(k==0)t++;c[k]=t;return t;
}
void as(int k,int p,int v,int g){
//cerr<<k<<' '<<p<<' '<<v<<' '<<g<<endl;
int j=v;l[k]=v;
for(auto i:a[k])if(i!=p){j+=(c[i]+1)*g;as(i,k,j,g*(-1));}
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
for(int i=0;i<n-1;i++){
a[u[i]].insert(v[i]);
a[v[i]].insert(u[i]);
}
int r=ch(0,-1);as(0,-1,0,1);
//for(int i=0;i<n;i++){cerr<<i<<'-'<<c[i]<<endl;}
vector<int> f;for(int i=0;i<n;i++){f.push_back(l[i]);//cerr<<i<<':'<<l[i]<<endl;
}
return f;
}
int find_next_station(int s, int t, std::vector<int> c) {
int n=c.size();
//cerr<<s<<' '<<t<<endl;for(auto i:c)cerr<<i<<'-';cerr<<endl;
if(s<c[0]){
for(int i=0;i<n-1;i++){if(t==c[i])return t;if(c[i]>t)return c[i];}
return c[n-1];
}
else{
for(int i=n-1;i>=1;i--){if(t==c[i])return t;if(t>c[i])return c[i];}
return c[0];
}
exit(1);
return c[0];
}
컴파일 시 표준 에러 (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... |