이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#include "dreaming.h"
#define N 100005
int dep[N],ans;
vector<int> val;
vector<pair<int,int>> g[N];
pair<int,int> ma1[N],ma2[N];
bitset<N> vis;
int dfs(int s,int f){
vis[s]=true;
for(auto x:g[s]){
if(x.first==f)continue;
int d=dfs(x.first,s)+x.second;
pair<int,int> pa=make_pair(d,x.first);
if(pa>ma1[s])swap(pa,ma1[s]);
if(pa>ma2[s])swap(pa,ma2[s]);
dep[s]=max(dep[s],d);
}
ans=max(ans,ma1[s].first+ma2[s].first);
return dep[s];
}
int cal(int s,int f,int carry){
vis[s]=true;
int m;
m=max(carry,ma1[s].first);
for(auto x:g[s]){
if(x.first==f)continue;
if(ma1[s].second==x.first)m=min(m,cal(x.first,s,max(carry,ma2[s].first)+x.second));
else m=min(m,cal(x.first,s,max(carry,ma1[s].first)+x.second));
}
return m;
}
int travelTime(int n, int m, int l, int u[N], int v[N], int t[N]){
int i,a,b,w,com;
for(i=0;i<m;i++){
a=u[i],b=v[i],w=t[i];
g[a].push_back({b,w});
g[b].push_back({a,w});
}
com=n-m;
for(i=0;i<n;i++)ma1[i]=ma2[i]={0,-1};
for(i=0;i<n;i++)if(!vis[i])dfs(i,-1);
vis=0;
for(i=0;i<n;i++)if(!vis[i])val.push_back(cal(i,-1,0));
sort(val.begin(),val.end(),greater<int>());
if(val.size()>1)ans=max(ans,val[0]+val[1]+l);
if(val.size()>2)ans=max(ans,val[1]+val[2]+2*l);
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:39:17: warning: variable 'com' set but not used [-Wunused-but-set-variable]
39 | int i,a,b,w,com;
| ^~~
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |