이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "race.h"
#include <bits/stdc++.h>
#define jizz ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define pb push_back
#define ET cout << "\n"
#define MEM(i,j) memset(i,j,sizeof i)
#define F first
#define S second
#define MP make_pair
#define ALL(v) v.begin(),v.end()
#define DB(a,s,e) {for(int i=s;i<e;++i) cout << a[i] << " ";ET;}
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
bitset<200005> vis;
vector<pll> G[200005];
const ll INF=1e9;
ll ans=INF,k,wei,w[200005];
void center(ll u,ll f,ll ¢,ll sz)
{
ll x=0;
w[u]=1;
for(pll i:G[u])
if(i.F!=f&&!vis[i.F])
center(i.F,u,cent,sz),x=max(x,w[i.F]),w[u]+=w[i.F];
x=max(x,sz-w[u]);
if(x<wei) wei=x,cent=u;
}
void dfs(ll u,ll f,ll d,ll r,vector<pll> &v)
{
v.pb(MP(d,r));
for(pll i:G[u])
if(i.F!=f&&!vis[i.F])
dfs(i.F,u,d+i.S,r+1,v);
}
void cut(ll u,ll sz)
{
ll c;
wei=INF,center(u,u,c,sz);
vis[c]=1;
for(auto i:G[c])
if(!vis[i.F])
if(w[i.F]>w[u]) cut(i.F,w[u]-w[c]);
else cut(i.F,w[i.F]);
unordered_map<ll,ll> mp;
mp[0]=0;
for(pll i:G[c])
if(!vis[i.F])
{
vector<pll> v;
dfs(i.F,i.F,i.S,1,v);
for(pll j:v)
{
auto p=mp.find(k-j.F);
if(p!=mp.end()) ans=min(ans,j.S+p->S);
}
for(pll j:v)
{
auto p=mp.find(j.F);
if(p!=mp.end()) p->S=min(p->S,j.S);
else mp[j.F]=j.S;
}
}
vis[c]=0;
}
int best_path(int N, int K, int H[][2], int L[])
{
k=K;
for(int i=0;i<N-1;++i)
G[H[i][0]].pb(MP(H[i][1],L[i])),G[H[i][1]].pb(MP(H[i][0],L[i]));
cut(0,N);
if(ans==INF) return -1;
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
race.cpp: In function 'void cut(ll, ll)':
race.cpp:47:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
if(!vis[i.F])
^| # | 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... |