제출 #162987

#제출 시각아이디문제언어결과실행 시간메모리
162987MinnakhmetovToll (BOI17_toll)C++14
56 / 100
3047 ms30044 KiB
#include <bits/stdc++.h>
    
#define ll long long
#define all(aaa) aaa.begin(), aaa.end()
 
using namespace std;

struct E {
	int a, b, w;
};

const int N = 1e6 + 5, INF = 1e9;
E e[N];
int d[N], ans[N];
vector<pair<int, int>> v[N];
 
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);

    int n, m, k, o;
    cin >> k >> n >> m >> o;

    for (int i = 0; i < m; i++) {
    	cin >> e[i].a >> e[i].b >> e[i].w;
    }

    sort(e, e + m, [](E x, E y) {
    	return x.a < y.a;
    });

    for (int i = 0; i < o; i++) {
    	int x, y;
    	cin >> x >> y;
    	v[x].push_back({y, i});
    }

    for (int i = 0; i < n; i++) {
    	if (!v[i].empty()) {
    		fill(d, d + n, INF);

	    	d[i] = 0;

	    	for (int j = 0; j < m; j++) {
	    		d[e[j].b] = min(d[e[j].b], d[e[j].a] + e[j].w);
	    	}

	    	for (auto p : v[i]) {
	    		if (d[p.first] == INF)
	    			ans[p.second] = -1;
	    		else
	    			ans[p.second] = d[p.first];
	    	}
    	}
    }

    for (int i = 0; i < o; i++) {
    	cout << ans[i] << "\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...