제출 #259383

#제출 시각아이디문제언어결과실행 시간메모리
259383uacoder123꿈 (IOI13_dreaming)C++14
32 / 100
98 ms19704 KiB
#include <bits/stdc++.h> #include "dreaming.h" using namespace std; #define F first #define S second #define FOR(i,a,b) for (auto i = (a); i <= (b); ++i) #define NFOR(i,a,b) for(auto i = (a); i >= (b); --i) #define all(x) (x).begin(), (x).end() #define sz(x) lli(x.size()) #define mp(i,a) make_pair(i,a) #define pb(a) push_back(a) #define bit(x,b) (x&(1LL<<b)) typedef long long int lli; typedef pair <lli,lli> ii; typedef pair <lli,ii> iii; typedef vector <lli> vi; lli n,m,l,ans=0,vis[100001],co=0,ans1=0; vector<iii> al[100001]; vi v; lli dfs(lli node,lli p) { vis[node]=1; co++; for(lli i=0;i<al[node].size();++i) { if(!vis[al[node][i].S.F]) { al[node][i].F=dfs(al[node][i].S.F,node); al[node][i].F+=al[node][i].S.S; } } sort(all(al[node])); if(al[node].size()>1) ans1=max(ans1,al[node].back().F+al[node][al[node].size()-2].F); else ans1=max(ans1,al[node].back().F); return(al[node].back().F); } void dfs2(lli node,lli p) { sort(all(al[node])); lli to=al[node].back().S.F; ans=min(ans,al[node].back().F); if(to==p) return; for(lli i=0;i<al[to].size();++i) { if(al[to][i].S.F==node) { al[to][i].F=al[node][al[node].size()-2].F+al[to][i].S.S; break; } } dfs2(to,node); } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { n=N; m=M; l=L; for(lli i=0;i<m;++i) { al[A[i]].pb(mp(0,mp(B[i],T[i]))); al[B[i]].pb(mp(0,mp(A[i],T[i]))); co+=T[i]; } for(lli i=0;i<n;++i) { if(al[i].size()>2) exit(1); al[i].pb(mp(0,mp(i,i))); } for(lli i=0;i<n;++i) { if(!vis[i]) { dfs(i,i); ans=10000000000000000; dfs2(i,i); v.pb(ans); } } sort(all(v)); ans=v.back(); if(v.size()>1) ans=v.back()+v[v.size()-2]+l; if(v.size()>2) ans=max(ans,2*l+v[v.size()-2]+v[v.size()-3]); ans1=max(ans1,ans); return(ans1); }

컴파일 시 표준 에러 (stderr) 메시지

dreaming.cpp: In function 'lli dfs(lli, lli)':
dreaming.cpp:26:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(lli i=0;i<al[node].size();++i)
              ~^~~~~~~~~~~~~~~~
dreaming.cpp: In function 'void dfs2(lli, lli)':
dreaming.cpp:48:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(lli i=0;i<al[to].size();++i)
              ~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...