제출 #1170353

#제출 시각아이디문제언어결과실행 시간메모리
1170353rayan_bdDreaming (IOI13_dreaming)C++20
0 / 100
1096 ms12688 KiB
#include <bits/stdc++.h> #include "dreaming.h" using namespace std; #define ll long long #define show(n) cout<<n<<'\n' #define all(v) v.begin(), v.end() #define pb push_back #define fi first #define se second const int INF = 2e9; const int mxN = 1e5 + 5; vector<pair<int,int>> adj[mxN]; int compo[mxN],curr=1; void add_edge(int u,int v,int w){ adj[u].pb({v,w}); adj[v].pb({u,w}); } int dfs(int u,int par,int w){ if(curr==1) compo[u]=curr; int mx=w; for(auto it:adj[u]){ if(it.fi^par) mx=max(mx,dfs(it.fi,u,w+it.se)); } return mx; } int travelTime(int N,int M,int L,int A[],int B[],int T[]){ for(int i=0;i<M;++i) add_edge(A[i],B[i],T[i]); int cost1=INF,cost2=INF; dfs(0,-1,0); ++curr; for(int i=0;i<N;++i){ if(compo[i]==1){ cost1=min(cost1,dfs(i,-1,0)); }else{ cost2=min(cost2,dfs(i,-1,0)); } } curr=1; for(int i=0;i<N;++i) adj[i].clear(),compo[i]=0ll; return cost1+cost2+L; }
#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...