# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1225859 | PVM_pvm | 기지국 (IOI20_stations) | C++20 | 314 ms | 576 KiB |
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1000
int pt;
int nch[MAXN],krai[MAXN];
vector<int> vv[MAXN];
void dfs(int x, int par)
{
nch[x]=pt;
pt++;
for (int q=0;q<vv[x].size();q++)
{
if (vv[x][q]==par) continue;
dfs(vv[x][q],x);
}
krai[x]=pt-1;
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
for (int q=0;q<n;q++) vv[q].clear();
pt=0;
for (int i = 0; i < n-1; i++) {
vv[ u[i] ].push_back(v[i]);
vv[ v[i] ].push_back(u[i]);
}
dfs(0,-1);
vector<int> labels(n);
for (int q=0;q<n;q++)
{
labels[q]=nch[q]*1000+krai[q];
//cout<<labels[q]<<" ";
}
return labels;
}
int find_next_station(int s, int t, vector<int> c) {
int mstS=s/1000;
int mstT=t/1000;
int prr=-1;
for (int q=0;q<c.size();q++)
{
int mstC=c[q]/1000;
if (mstC<mstS)
{
prr=q;
break;
}
}
//cout<<prr<<" "<<c[prr]<<"\n";
int kraiS=s%1000;
if (mstT>kraiS || mstT<mstS) return c[prr];
for (int q=0;q<c.size();q++)
{
if (prr==q) continue;
int mstC=c[q]/1000;
int kraiC=c[q]%1000;
if (mstT>=mstC && mstT<=kraiC) return c[q];
}
}
컴파일 시 표준 에러 (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... |