제출 #119875

#제출 시각아이디문제언어결과실행 시간메모리
119875dolphingarlic꿈 (IOI13_dreaming)C++14
0 / 100
52 ms10488 KiB
#include "dreaming.h" #include <bits/stdc++.h> #pragma GCC optimize("O3") #define FOR(i, x, y) for (ll i = x; i < y; i++) typedef long long ll; using namespace std; vector<pair<ll, ll>> graph[100001]; ll len, ans = 0, r[2], indx = 0; bool visited[100001]; void dfs(ll node, ll parent = -1) { visited[node] = true; for (auto& i : graph[node]) { if (i.first == parent) continue; len += i.second; dfs(i.first, node); } } ll dfs2(ll node, ll parent = -1, ll left = 0) { for (auto& i : graph[node]) { if (i.first == parent) continue; return min(max(left, len - left), dfs2(i.first, node, left + i.second)); } return len; } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { fill(visited, visited + N, false); FOR(i, 0, M) { graph[A[i]].push_back({B[i], T[i]}); graph[B[i]].push_back({A[i], T[i]}); } FOR(i, 0, N) { if (graph[i].size() == 1 && !visited[i]) { len = 0; dfs(i); ans = max(len, ans); r[indx++] = dfs2(i); } } cout << max(ans, r[0] + r[1] + L) << '\n'; return 0; }
#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...