답안 #336129

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
336129 2020-12-14T19:10:40 Z wind_reaper 꿈 (IOI13_dreaming) C++17
14 / 100
1000 ms 8808 KB
#include "dreaming.h"
#include <bits/stdc++.h>
 
using namespace std; 
 
vector<vector<pair<int, int>>> adj; 
vector<int> father, father_dis; 
bitset<100001> vis, vis2;
vector<int> components, c2; 
vector<int> dis; 
void new_comp(int node, int c, int N){
	vis2 = bitset<100001>(0); 
	father.assign(N, -1); 
	father_dis.assign(N, 0); 
	dis.assign(N, 0); 
 	vector<pair<int, int>> q;
	q.emplace_back(make_pair(node, 0)); 
	int r = 0; 
	int c1 = 0; 
	while(c1 != q.size()){
		pair<int, int> cur = q[c1++]; 
		r++; 
		vis[cur.first] = 1; 
		dis[cur.first] = cur.second; 
		for(pair<int, int> e : adj[cur.first]){
			if(!vis[e.first])
				q.emplace_back(make_pair(e.first, cur.second + e.second)); 
		}
	}
 
	if(r == 1) 
		return;

 	q.clear(); 
	int end = max_element(dis.begin(), dis.end()) - dis.begin(); 
	dis.assign(N, 0); 
 
	q.emplace_back(make_pair(end, 0)); 
 	c1 = 0; 
	while(c1 != q.size()){
		pair<int, int> cur = q[c1++]; 
		vis2[cur.first] = 1; 
		dis[cur.first] = cur.second; 
		for(pair<int, int> e : adj[cur.first]){
			if(!vis2[e.first]){
				father[e.first] = cur.first;
				father_dis[e.first] = e.second; 
				q.emplace_back(make_pair(e.first, cur.second + e.second)); 
			}
		}
	}
 
	auto it = max_element(dis.begin(), dis.end()); 
	end = it - dis.begin();
	int pops = father[end]; 
	int cur_dis = INT_MAX; 
	int travel = 0; 
	while(pops != -1){
		travel += father_dis[end]; 
		cur_dis = min(cur_dis, max(travel, *it - travel)); 
		end = pops;
		pops = father[end];  
	}
	c2.push_back(*it); 
	components.push_back(cur_dis); 
}
int travelTime(int N, int M, int L, int A[], int B[], int T[]) {
    adj.resize(N);  
    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 c = 0; 
    for(int i = 0; i < N; i++){
    	if(!vis[i]){
    		new_comp(i, c++, N);
	    }
    }
   
    sort(components.rbegin(), components.rend()); 
    int max_d = *max_element(c2.begin(), c2.end()); 
    if(c == 1)
    	return components[0]; 
    if(c == 2)
    	return max(max_d, components[0] + components[1] + L); 
    return max({max_d, components[0] + components[1] + L, components[1] + components[2] + 2*L}); 
}

Compilation message

dreaming.cpp: In function 'void new_comp(int, int, int)':
dreaming.cpp:20:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |  while(c1 != q.size()){
      |        ~~~^~~~~~~~~~~
dreaming.cpp:40:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |  while(c1 != q.size()){
      |        ~~~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 8684 KB Output is correct
2 Correct 53 ms 8808 KB Output is correct
3 Correct 36 ms 5736 KB Output is correct
4 Correct 7 ms 1644 KB Output is correct
5 Correct 6 ms 1260 KB Output is correct
6 Correct 12 ms 2284 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 24 ms 3824 KB Output is correct
9 Correct 34 ms 4972 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 52 ms 6508 KB Output is correct
12 Correct 64 ms 7788 KB Output is correct
13 Correct 1 ms 492 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 8684 KB Output is correct
2 Correct 53 ms 8808 KB Output is correct
3 Correct 36 ms 5736 KB Output is correct
4 Correct 7 ms 1644 KB Output is correct
5 Correct 6 ms 1260 KB Output is correct
6 Correct 12 ms 2284 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 24 ms 3824 KB Output is correct
9 Correct 34 ms 4972 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 52 ms 6508 KB Output is correct
12 Correct 64 ms 7788 KB Output is correct
13 Correct 1 ms 492 KB Output is correct
14 Correct 1 ms 364 KB Output is correct
15 Correct 1 ms 512 KB Output is correct
16 Correct 1 ms 364 KB Output is correct
17 Correct 1 ms 364 KB Output is correct
18 Correct 1 ms 364 KB Output is correct
19 Correct 1 ms 364 KB Output is correct
20 Correct 1 ms 364 KB Output is correct
21 Correct 1 ms 364 KB Output is correct
22 Correct 1 ms 364 KB Output is correct
23 Correct 1 ms 364 KB Output is correct
24 Correct 1 ms 364 KB Output is correct
25 Correct 1 ms 364 KB Output is correct
26 Correct 1 ms 364 KB Output is correct
27 Correct 1 ms 364 KB Output is correct
28 Runtime error 1 ms 492 KB Execution killed with signal 11 (could be triggered by violating memory limits)
29 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 8684 KB Output is correct
2 Correct 53 ms 8808 KB Output is correct
3 Correct 36 ms 5736 KB Output is correct
4 Correct 7 ms 1644 KB Output is correct
5 Correct 6 ms 1260 KB Output is correct
6 Correct 12 ms 2284 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 24 ms 3824 KB Output is correct
9 Correct 34 ms 4972 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 52 ms 6508 KB Output is correct
12 Correct 64 ms 7788 KB Output is correct
13 Correct 1 ms 492 KB Output is correct
14 Correct 1 ms 364 KB Output is correct
15 Correct 1 ms 512 KB Output is correct
16 Correct 1 ms 364 KB Output is correct
17 Correct 1 ms 364 KB Output is correct
18 Correct 1 ms 364 KB Output is correct
19 Correct 1 ms 364 KB Output is correct
20 Correct 1 ms 364 KB Output is correct
21 Correct 1 ms 364 KB Output is correct
22 Correct 1 ms 364 KB Output is correct
23 Correct 1 ms 364 KB Output is correct
24 Correct 1 ms 364 KB Output is correct
25 Correct 1 ms 364 KB Output is correct
26 Correct 1 ms 364 KB Output is correct
27 Correct 1 ms 364 KB Output is correct
28 Runtime error 1 ms 492 KB Execution killed with signal 11 (could be triggered by violating memory limits)
29 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1089 ms 6124 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 8684 KB Output is correct
2 Correct 53 ms 8808 KB Output is correct
3 Correct 36 ms 5736 KB Output is correct
4 Correct 7 ms 1644 KB Output is correct
5 Correct 6 ms 1260 KB Output is correct
6 Correct 12 ms 2284 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 24 ms 3824 KB Output is correct
9 Correct 34 ms 4972 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 52 ms 6508 KB Output is correct
12 Correct 64 ms 7788 KB Output is correct
13 Correct 1 ms 492 KB Output is correct
14 Correct 2 ms 492 KB Output is correct
15 Correct 6 ms 492 KB Output is correct
16 Correct 12 ms 620 KB Output is correct
17 Correct 2 ms 492 KB Output is correct
18 Correct 6 ms 492 KB Output is correct
19 Correct 11 ms 620 KB Output is correct
20 Correct 2 ms 492 KB Output is correct
21 Correct 6 ms 620 KB Output is correct
22 Correct 10 ms 620 KB Output is correct
23 Correct 1 ms 364 KB Output is correct
24 Correct 1 ms 364 KB Output is correct
25 Correct 1 ms 364 KB Output is correct
26 Correct 1 ms 364 KB Output is correct
27 Correct 1 ms 364 KB Output is correct
28 Correct 1 ms 364 KB Output is correct
29 Correct 1 ms 364 KB Output is correct
30 Correct 1 ms 364 KB Output is correct
31 Correct 1 ms 364 KB Output is correct
32 Correct 1 ms 364 KB Output is correct
33 Correct 1 ms 364 KB Output is correct
34 Correct 1 ms 364 KB Output is correct
35 Correct 1 ms 364 KB Output is correct
36 Correct 1 ms 364 KB Output is correct
37 Correct 1 ms 364 KB Output is correct
38 Correct 1 ms 364 KB Output is correct
39 Correct 1 ms 364 KB Output is correct
40 Runtime error 1 ms 492 KB Execution killed with signal 11 (could be triggered by violating memory limits)
41 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 8684 KB Output is correct
2 Correct 53 ms 8808 KB Output is correct
3 Correct 36 ms 5736 KB Output is correct
4 Correct 7 ms 1644 KB Output is correct
5 Correct 6 ms 1260 KB Output is correct
6 Correct 12 ms 2284 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 24 ms 3824 KB Output is correct
9 Correct 34 ms 4972 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 52 ms 6508 KB Output is correct
12 Correct 64 ms 7788 KB Output is correct
13 Correct 1 ms 492 KB Output is correct
14 Correct 1 ms 364 KB Output is correct
15 Correct 1 ms 512 KB Output is correct
16 Correct 1 ms 364 KB Output is correct
17 Correct 1 ms 364 KB Output is correct
18 Correct 1 ms 364 KB Output is correct
19 Correct 1 ms 364 KB Output is correct
20 Correct 1 ms 364 KB Output is correct
21 Correct 1 ms 364 KB Output is correct
22 Correct 1 ms 364 KB Output is correct
23 Correct 1 ms 364 KB Output is correct
24 Correct 1 ms 364 KB Output is correct
25 Correct 1 ms 364 KB Output is correct
26 Correct 1 ms 364 KB Output is correct
27 Correct 1 ms 364 KB Output is correct
28 Runtime error 1 ms 492 KB Execution killed with signal 11 (could be triggered by violating memory limits)
29 Halted 0 ms 0 KB -