Cod sursa(job #2543331)

Utilizator lucametehauDart Monkey lucametehau Data 11 februarie 2020 08:07:21
Problema PScNv Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream cin ("pscnv.in");
ofstream cout ("pscnv.out");

int n, m, src, dst, x, y, z;

vector <pair <int, int>> g[250005];
bool viz[250005];

bool bfs(int lim) {
  queue <int> q;
  for(int i = 1; i <= n; i++)
    viz[i] = 0;
  viz[src] = 1;
  q.push(src);
  while(!q.empty()) {
    int nod = q.front();
    q.pop();
    for(auto &fiu : g[nod]) {
      if(fiu.second <= lim && !viz[fiu.first]) {
        q.push(fiu.first);
        viz[fiu.first] = 1;
      }
    }
  }
  return viz[dst];
}

int main() {
  cin >> n >> m >> src >> dst;
  for(; m; m--) {
    cin >> x >> y >> z;
    g[x].push_back({y, z});
  }
  int st = 1, dr = 1000, mid;
  while(st <= dr) {
    mid = (st + dr) >> 1;
    if(bfs(mid))
      dr = mid - 1;
    else
      st = mid + 1;
  }
  cout << st;
  return 0;
}