답안 #787999

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
787999 2023-07-19T15:58:18 Z allin27x 꿈 (IOI13_dreaming) C++17
18 / 100
108 ms 43320 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];
	}
	int r;
	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;
		r = 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]));
		}
		if (ans!=1e7) cp[ind] = ans; else cp[ind] = 0;
		ind++;
	}
	if (ind == 1){
		return ds[1][r];
	}
	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);
// }

Compilation message

dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:51:17: warning: 'r' may be used uninitialized in this function [-Wmaybe-uninitialized]
   51 |   return ds[1][r];
      |                 ^
# 결과 실행 시간 메모리 Grader output
1 Incorrect 108 ms 43320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 11220 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 108 ms 43320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 64 ms 31616 KB Output is correct
2 Correct 64 ms 31588 KB Output is correct
3 Correct 60 ms 31488 KB Output is correct
4 Correct 65 ms 31564 KB Output is correct
5 Correct 64 ms 31476 KB Output is correct
6 Correct 64 ms 32700 KB Output is correct
7 Correct 64 ms 32460 KB Output is correct
8 Correct 60 ms 31180 KB Output is correct
9 Correct 64 ms 31048 KB Output is correct
10 Correct 66 ms 32232 KB Output is correct
11 Correct 6 ms 11220 KB Output is correct
12 Correct 35 ms 26848 KB Output is correct
13 Correct 37 ms 26920 KB Output is correct
14 Correct 34 ms 26936 KB Output is correct
15 Correct 36 ms 26912 KB Output is correct
16 Correct 41 ms 26824 KB Output is correct
17 Correct 35 ms 26864 KB Output is correct
18 Correct 35 ms 26988 KB Output is correct
19 Correct 34 ms 26856 KB Output is correct
20 Correct 6 ms 11220 KB Output is correct
21 Correct 5 ms 11220 KB Output is correct
22 Correct 6 ms 11732 KB Output is correct
23 Correct 33 ms 26888 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 11220 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 108 ms 43320 KB Output isn't correct
2 Halted 0 ms 0 KB -