이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include"dreaming.h"
using namespace std;
vector<pair<int,int>>g[100005];
bool was[100005];
bool wass[100005];
int dd[100005];
int cost[100005];
int mn,mni;
vector<int>t;
void dfs(int v){
wass[v]=1;
t.push_back(v);
for(auto u:g[v]){
if(!wass[u.first]){
dfs(u.first);
}
}
// cout<<d[v]<<' '<<sum<<endl;
}
int mxx=0,mxi=0;
int dfss(int v,int d=0){
was[v]=1;
if(d>mxx){
mxx=d;
mxi=v;
}
int mx=d;
for(auto u:g[v]){
if(!was[u.first]){
mx=max(mx,dfss(u.first,d+u.second));
}
}
was[v]=0;
return mx;
}
void dfsss(int v,int d=0){
was[v]=1;
dd[v]=0;
int mx=d;
for(auto u:g[v]){
if(!was[u.first]){
dfsss(u.first);
dd[v]=max(dd[v],dd[u.first]+u.second);
}
}
was[v]=0;
}
void dfsc(int v,int mx){
was[v]=1;
cost[v]=mx;
multiset<int>s;
for(auto u:g[v]){
if(!was[u.first]){
s.insert(dd[u.first]+u.second);
}
}
for(auto u:g[v]){
if(!was[u.first]){
s.erase(s.find(dd[u.first]+u.second));
if(!s.empty()){
dfsc(u.first,max(mx+u.second,*s.rbegin()+u.second));
}else{
dfsc(u.first,mx+u.second);
}
s.insert(dd[u.first]+u.second);
}
}
was[v]=0;
}
int travelTime(int N,int M,int L,int A[],int B[],int T[]){
for(int i=0;i<M;i++){
g[A[i]].push_back({B[i],T[i]});
g[B[i]].push_back({A[i],T[i]});
}
vector<pair<int,int>>rots;
for(int i=0;i<N;i++){
if(!wass[i]){
t.clear();
mn=INT_MAX;
dfs(i);
dfsss(i);
dfsc(i,0);
for(auto u:t){
cost[u]=max(cost[u],dd[u]);
// cout<<u<<' '<<cost[u]<<endl;
if(cost[u]<mn){
mn=cost[u];
mni=u;
}
}
rots.push_back({mn,mni});
}
}
sort(rots.begin(),rots.end());
reverse(rots.begin(),rots.end());
for(int j=1;j<rots.size();j++){
g[rots[j].second].push_back({rots[0].second,L});
g[rots[0].second].push_back({rots[j].second,L});
}
dfss(0);
dfss(mxi);
return mxx;
}
컴파일 시 표준 에러 (stderr) 메시지
dreaming.cpp: In function 'void dfsss(int, int)':
dreaming.cpp:40:9: warning: unused variable 'mx' [-Wunused-variable]
40 | int mx=d;
| ^~
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:97:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
97 | for(int j=1;j<rots.size();j++){
| ~^~~~~~~~~~~~
# | 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... |