Cod sursa(job #669960)

Utilizator cont_de_testeCont Teste cont_de_teste Data 28 ianuarie 2012 09:07:34
Problema PScNv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
# include <cstdio>
# include <vector>
using namespace std;

const char *FIN = "pscnv.in", *FOU = "pscnv.out";
const int MAX = 250005, MAX_K = 1001;

vector < pair <int, int> > G[MAX_K];
int N, M, X, Y, T[MAX];

inline void unite (int X, int Y) {
    T[X] = Y;
}

int search (int X) {
    if (X != T[X]) T[X] = search (T[X]);
    return T[X];
}

int main (void) {
    freopen (FIN, "r", stdin);

    scanf ("%d %d %d %d", &N, &M, &X, &Y);
    for (int i = 1; i <= N; ++i) T[i] = i;
    for (int i = 1, x, y, z; i <= M; ++i) {
        scanf ("%d %d %d", &x, &y, &z);
        G[z].push_back (make_pair (x, y));
    }
    for (int i = 1; i < MAX_K; ++i) {
        for (typeof (G[i].begin ()) it = G[i].begin (); it != G[i].end (); ++it) {
            if (search (it -> first) != search (it -> second))
                unite (search (it -> first), search (it -> second));
        }
        if (search (X) == search (Y)) {
            fprintf (fopen (FOU, "w"), "%d", i);
            return 0;
        }
    }
}