Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define in f
- #define out cout
- ifstream f ("dragoni.in");
- ofstream g ("dragoni.out");
- int p;
- int n;
- int m;
- int Dmax[50010];
- int A[50010];
- int B[50010];
- int D[50010];
- int viz[50010];
- int node;
- int rez;
- queue <int> q;
- vector <int > stl[1000];
- int main() {
- in >> p;
- in >> n;
- in >> m;
- for(int i = 1; i <= n; i++) {
- in >> Dmax[i];
- }
- for(int i = 1; i <= m; i++) {
- in >> A[i];
- in >> B[i];
- in >> D[i];
- stl[A[i]].push_back(B[i]);
- stl[B[i]].push_back(A[i]);
- }
- rez = Dmax[1];
- q.push(1);
- viz[1]++;
- while(q.empty() == false) {
- node = q.front();
- q.pop();
- for(int i = 0; i < stl[node].size(); i++) {
- if((viz[stl[node][i]] == 0) && (D[stl[node][i]] <= Dmax[node])) {
- viz[stl[node][i]]++;
- q.push(stl[node][i]);
- }
- }
- }
- for(int i = 1; i <= n; i++) {
- if(viz[i] == 1) {
- rez = max(rez,Dmax[i]);
- }
- }
- out << rez;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement