#include <bits/stdc++.h>
using namespace std;
vector<vector<pair<int, int>> > conns;
vector<int> ind;
vector<bool> needed;
vector<int> res;
int remaining;
void dijkstra(int node, int maxcost, int cost){
// cerr << "@" << node << " for " << cost << " until " << maxcost << endl;
if (needed[node]){
remaining --;
res[node] = cost;
}
for (;ind[node] < conns[node].size() && conns[node][ind[node]].first < maxcost; ind[node]++){
dijkstra(conns[node][ind[node]].second, conns[node][ind[node]].first, max(conns[node][ind[node]].first, cost));
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int nodes, edges, targets;
cin >> nodes >> edges >> targets;
conns.resize(nodes);
ind.resize(nodes);
for (int i = 0; i < edges; i++){
int a, b, c;
cin >> a >> b>> c;
a--; b--; c *= -1;
conns[a].push_back({c,b});
conns[b].push_back({c, a});
}
for (int i = 0 ; i < nodes; i++){
sort(conns[i].begin(), conns[i].end());
}
res.resize(nodes);
vector<int> trg(targets);
needed.resize(nodes);
remaining = targets;
for (int i = 0; i < targets; i++){
cin >> trg[i]; trg[i]--;
needed[trg[i]] = 1;
}
dijkstra(0, 1000000000, -1000000000);
for (int i = 0; i < targets; i++){
cout << -res[trg[i]] << endl;
}
}
Compilation message
sightseeing.cpp: In function 'void dijkstra(int, int, int)':
sightseeing.cpp:18:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (;ind[node] < conns[node].size() && conns[node][ind[node]].first < maxcost; ind[node]++){
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
256 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
4 ms |
504 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
50 ms |
3192 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3539 ms |
97556 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |