이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "dreaming.h"
#include<bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
using namespace std;
const int mxn=1e5+6;
vector<int> adj[mxn];
vector<int> cost[mxn];
int m1[mxn]={};
int m2[mxn]={};
int u1[mxn];
int ans=0;
int vis[mxn]={};
void dfs(int cur,int prev)
{
vis[cur]=1;
for(int i=0;i<adj[cur].size();i++)
{
int v=adj[cur][i];
int c=cost[cur][i];
if(v==prev)continue;
dfs(v,cur);
int k=m1[v]+c;
if(k>m1[cur])
{
m2[cur]=m1[cur];
m1[cur]=k;
u1[cur]=v;
}
else if(k>m2[cur])
m2[cur]=k;
}
}
vector<int> v;
void calc(int cur,int prev,int cst)
{
v.push_back(max(cst,m1[cur]));
ans=max(ans,cst+m1[cur]);
for(int i=0;i<adj[cur].size();i++)
{
int v=adj[cur][i];
int c=cost[cur][i];
if(v==prev)continue;
int tmp=cst+c;
if(v==u1[cur])tmp=max(tmp,m2[cur]+c);
else tmp=max(tmp,m1[cur]+c);
calc(v,cur,tmp);
}
}
int travelTime(int N, int M, int L, int A[], int B[], int T[])
{
for(int i=0;i<M;i++)
{
adj[A[i]].push_back(B[i]);
adj[B[i]].push_back(A[i]);
cost[A[i]].push_back(T[i]);
cost[B[i]].push_back(T[i]);
}
vector<int> fn;
for(int i=0;i<N;i++)
{
if(vis[i])continue;
dfs(i,-1);
calc(i,-1,0);
sort(v.begin(),v.end());
fn.push_back(v[0]);
v.clear();
}
sort(fn.begin(),fn.end(),greater<int>());
if(fn.size()>1)
{
ans=max(ans,fn[0]+fn[1]+L);
}
if(fn.size()>2)
{
ans=max(ans,fn[1]+fn[2]+2*L);
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
dreaming.cpp: In function 'void dfs(int, int)':
dreaming.cpp:20:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<adj[cur].size();i++)
~^~~~~~~~~~~~~~~~
dreaming.cpp: In function 'void calc(int, int, int)':
dreaming.cpp:49:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<adj[cur].size();i++)
~^~~~~~~~~~~~~~~~
# | 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... |