이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "dreaming.h"
#include <bits/stdc++.h>
using namespace std;
int n, m, l;
const int N = 1e5 + 69;
vector <pair<int, int>> adj[N];
vector <int> comp;
bool vis[N];
int dist[N], mx[N];
void dfs(int u){
vis[u] = true;
comp.push_back(u);
for (auto [v, w] : adj[u]){
if (!vis[v]) dfs(v);
}
}
void bfs(int i){
for (auto x : comp) dist[x] = -1;
dist[i] = 0;
queue <int> q;
q.push(i);
while (!q.empty()){
int u = q.front();
q.pop();
for (auto [v, w] : adj[u]){
if (dist[v] == -1){
dist[v] = dist[u] + w;
q.push(v);
}
}
}
for (auto x : comp) mx[x] = max(mx[x], dist[x]);
}
int get(){
pair<int, int> best = make_pair(-1, -1);
for (auto x : comp){
best = max(best, make_pair(dist[x], x));
}
return best.second;
}
int travelTime(int N, int M, int L, int A[], int B[], int T[]) {
n = N; m = M; l = L;
for (int i = 0; i < m; i++){
adj[A[i]].push_back({B[i], T[i]});
adj[B[i]].push_back({A[i], T[i]});
}
int ans = 0;
vector <int> ok;
for (int i = 0; i < n; i++){
if (vis[i]) continue;
comp.clear();
dfs(i);
bfs(i);
int g1 = get();
bfs(g1);
int g2 = get();
bfs(g2);
int mn = 1e9;
for (auto x : comp) mn = min(mn, mx[x]);
int ma = -1;
for (auto x : comp) ma = max(ma, mx[x]);
ans = max(ans, ma);
ok.push_back(mn);
}
sort(ok.begin(), ok.end(), greater<int>());
if (ok.size() == 2){
ans = max(ans, l + ok[0] + ok[1]);
} else if (ok.size() >= 3){
ans = max(ans, l + ok[0] + ok[1]);
ans = max(ans, 2 * l + ok[1] + ok[2]);
}
return ans;
}
// int main(){
// int n, m, l; cin >> n >> m >> l;
// int a[m], b[m], t[m];
// for (int i = 0; i < m; i++) cin >> a[i] >> b[i] >> t[i];
// cout << travelTime(n, m, l, a, b, t);
// return 0;
// }
# | 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... |