Cod sursa(job #745197)

Utilizator lucian666Vasilut Lucian lucian666 Data 10 mai 2012 18:30:18
Problema PScNv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb


#include<fstream>
#include<vector>
#include<utility>

#define mp make_pair
#define pb push_back
#define f first
#define s second

using namespace std;
ofstream out("pscnv.out");

const int mm=250005,mm2=1001;
vector<pair<int ,int> >G[mm2];
typedef vector<pair<int,int > > :: iterator IT;

int T[mm],n,m,X,Y;

void read();
void kruskal();
void unite(int x,int y);
int search(int x);

int main()
{
	read();
	kruskal();
	return 0;
}


void read()
{
	ifstream in("pscnv.in");
	in>>n>>m>>X>>Y;
	int x,y,c;
	for(int i=1;i<=m;i++)
	{
		in>>x>>y>>c;
		G[x].pb(mp(x,y));
	}
}

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

void unite(int x,int y)
{
	T[x]=y;
}

void kruskal()
{
	int i,j;
	for(i=1;i<=n;i++)
		T[i]=i;
	for(i=1;i<mm;i++)
	{
	for(IT I=G[i].begin();I<G[i].end();++I)
	{
		if(search(I->f)!=search(I->s))
			unite(search(I->f),search(I->s));
	}
	
	if(search(X)==search(Y))
	{
		out<<i;
		return;
	}
	}
}