답안 #864513

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
864513 2023-10-23T06:37:15 Z maks007 Toll (BOI17_toll) C++14
10 / 100
3000 ms 4460 KB
// Bismi ALlah
#include "bits/stdc++.h"

using namespace std;

signed main () {
	int n, m, k, query;
	cin >> k >> n >> m >> query;
	vector<pair <int,int>> g[n];
	vector <int> in(n, 0);
	for(int i = 0; i < m; i ++) {
		int u, v;
		cin >> u >> v;
		int w;
		cin >> w;
		g[u].push_back({v, w});
		in[v] ++;
	}
	
	priority_queue <pair <int,int>> q;
	vector <int> dist(n, 1e9);
	dist[0] = 0;
	q.push({0, 0});
	while(!q.empty()) {
		int v = q.top().second, cur_d = q.top().first;
		q.pop();
		if(cur_d > dist[v]) continue;
		for(auto [u, w] : g[v]) {
			if(dist[u] > dist[v] + w) {
				dist[u] = dist[v] + w;
				q.push({-dist[u], u});
			}
		}
	}
	while(query --) {
		int a, b;
		cin >> a >> b;
		
		if(a == 0) {
			if(dist[b] == 1e9) cout << -1 << "\n";
			else
			cout << dist[b] << "\n"; 
		}else {
			queue <int> q;
			vector <int> dist2(n, -1);
			dist2[a] = 0;
			q.push(a);
			while(!q.empty()) {
				int v = q.front();
				q.pop();
				for(auto [u, w] : g[v]) {
					if(dist2[u] == -1) {
						dist2[u] = dist2[v] + w;
						q.push(u);
					}
				}
			}
			if(dist2[b] == 1e9) cout << -1 << "\n";
			else cout << dist2[b] << "\n";
		}
	}
	return 0;
}

Compilation message

toll.cpp: In function 'int main()':
toll.cpp:28:12: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   28 |   for(auto [u, w] : g[v]) {
      |            ^
toll.cpp:51:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   51 |     for(auto [u, w] : g[v]) {
      |              ^
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3037 ms 4016 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 79 ms 3412 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 15 ms 348 KB Output is correct
8 Correct 16 ms 348 KB Output is correct
9 Correct 46 ms 3408 KB Output is correct
10 Correct 109 ms 4460 KB Output is correct
11 Correct 82 ms 3412 KB Output is correct
12 Correct 79 ms 3720 KB Output is correct
13 Correct 103 ms 3920 KB Output is correct
14 Correct 66 ms 2896 KB Output is correct
15 Correct 68 ms 2644 KB Output is correct
16 Correct 54 ms 2508 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3037 ms 4016 KB Time limit exceeded
2 Halted 0 ms 0 KB -