Submission #124577

# Submission time Handle Problem Language Result Execution time Memory
124577 2019-07-03T14:18:23 Z deinfreund Sightseeing (NOI14_sightseeing) C++14
15 / 25
3500 ms 56700 KB
#include <bits/stdc++.h>

using namespace std;

vector<vector<pair<int, int>> > conns;

int main(){
  int nodes, edges, targets;
  cin >> nodes >> edges >> targets;
  conns.resize(nodes);
  
  vector<pair<int, int>> edgeSort;
  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());
  }
  
  int remaining = 0;
  vector<bool> needed(nodes, 0);
  vector<int> trg;
  for (int i = 0 ; i < targets; i++){
    remaining ++;
    int a;
    cin >> a; a--;
    needed[a] = 1;
    trg.push_back(a);
  }
  vector<long long> best(nodes, 1000000000000000000LL);
  priority_queue<pair<long long, int>> pq;
  pq.push({-1000000000000000000LL,0});
  while (true){
    int pos, cost;
    do{
      pos = pq.top().second;
      cost = -pq.top().first;
      pq.pop();
    }while(cost > best[pos]);
    if (needed[pos]) remaining --;
    if (remaining == 0) break;
    for (int i = 0; i < conns[pos].size(); i++){
      int c = max(cost, conns[pos][i].first);
      if (c < best[conns[pos][i].second]){
	best[conns[pos][i].second] = c;
	pq.push({-c, conns[pos][i].second});
      }
    }
  }
  for (int i = 0; i < targets; i++){
    cout << -best[trg[i]] << endl;
  }
}

Compilation message

sightseeing.cpp: In function 'int main()':
sightseeing.cpp:46:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < conns[pos].size(); i++){
                     ~~^~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 504 KB Output is correct
2 Correct 4 ms 480 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 134 ms 3576 KB Output is correct
2 Correct 105 ms 3320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 3530 ms 56700 KB Time limit exceeded
2 Halted 0 ms 0 KB -