답안 #787985

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
787985 2023-07-19T15:47:56 Z allin27x 꿈 (IOI13_dreaming) C++17
18 / 100
123 ms 43584 KB
#include <bits/stdc++.h>
using namespace std;
#include "dreaming.h"

int ds[2][(int)1e5];
unordered_map<int,int> adj[(int)1e5];
int vis[(int)1e5];
int ind = 0;
unordered_set<int> sets[(int)1e5];
int cp[(int)1e5];

void dfs(int i , int p, int len, int x){
	sets[ind].insert(i);
	vis[i] = 1;
	ds[x][i] = len;
	for (auto const &pair: adj[i]){
		int c = pair.first; int w= pair.second;
		if (c==p) continue;
		dfs(c,i, len+w,x);
	}
}

int travelTime(int N, int M, int L, int A[], int B[], int T[]){
	for (int i=0; i<M; i++){
		int a = A[i]; int b = B[i];
		adj[a][b] = T[i]; adj[b][a] = T[i];
	}

	for (int i=0; i<N; i++){
		if (vis[i]) continue;
		dfs(i,i,0,0);
		int a1 = i;
		for (auto c: sets[ind]){
			if (ds[0][c]>ds[0][a1]) a1 = c;
		}
		dfs(a1,a1,0,0);
		int a2 = a1;
		for (auto c: sets[ind]){
			if (ds[0][c]>ds[0][a2]) a2 = c;
		}
		dfs(a2,a2,0,1);
		int ans = 1e7;
		for (auto c: sets[ind]){
			ans = min(ans, max(ds[0][c], ds[1][c]));
		}
		cp[ind] = ans;
		ind++;
	}
	if (ind == 1){
		int s = 0;
		for (int c=0; c<N; c++){
			if (ds[0][c]>ds[0][s]) s = c;
		}
		return ds[0][s];
	}
	sort(cp, cp+ind);
	if (ind ==2 ) return L + cp[ind-1] + cp[ind-2];
	return max(L + cp[ind-1] + cp[ind-2], 2*L + cp[ind-2] + cp[ind-3]);
}

// int main(){
// 	int n = 12; int m = 8 ;
// 	int l = 2;
// 	int a[] = {0, 8, 2, 5, 5, 1, 1, 10};
// 	int b[] = {8, 2, 7, 11, 1, 3, 9, 6};
// 	int t[] = {4, 2, 4, 3, 7, 1, 5, 3};
// 	cout<<travelTime(n,m,l,a,b,t);
// }
# 결과 실행 시간 메모리 Grader output
1 Incorrect 123 ms 43584 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 11272 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 123 ms 43584 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 50 ms 31684 KB Output is correct
2 Correct 52 ms 31892 KB Output is correct
3 Correct 48 ms 31944 KB Output is correct
4 Correct 50 ms 31984 KB Output is correct
5 Correct 47 ms 31800 KB Output is correct
6 Correct 50 ms 33100 KB Output is correct
7 Correct 51 ms 32904 KB Output is correct
8 Correct 47 ms 31556 KB Output is correct
9 Correct 46 ms 31340 KB Output is correct
10 Correct 49 ms 32732 KB Output is correct
11 Correct 6 ms 11220 KB Output is correct
12 Correct 23 ms 26908 KB Output is correct
13 Correct 24 ms 27000 KB Output is correct
14 Correct 23 ms 26964 KB Output is correct
15 Correct 23 ms 26908 KB Output is correct
16 Correct 24 ms 26932 KB Output is correct
17 Correct 23 ms 26896 KB Output is correct
18 Correct 24 ms 27028 KB Output is correct
19 Correct 23 ms 26884 KB Output is correct
20 Correct 6 ms 11220 KB Output is correct
21 Correct 6 ms 11252 KB Output is correct
22 Correct 6 ms 11732 KB Output is correct
23 Correct 20 ms 26964 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 11272 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 123 ms 43584 KB Output isn't correct
2 Halted 0 ms 0 KB -