Cod sursa(job #328284)

Utilizator TabaraTabara Mihai Tabara Data 1 iulie 2009 15:29:00
Problema PScNv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <string.h>

using namespace std;

#define in "pscnv.in"
#define out "pscnv.out"
#define pb push_back
#define mp make_pair

#define maxim(a,b) ((a) > (b) ? (a) : (b)) 

#define NMAX 250005
#define KMAX 1005

int N, M, X, Y;

vector < pair < int, int > > CST[KMAX];
int tata[NMAX];
int rang[NMAX];

int Find ( int x )
{
	if ( x != tata[ x ] ) 
		tata[ x ] = Find ( tata[ x ] );
	return tata[ x ];
}

void Union ( int x, int y )
{
	if ( rang[ x ] > rang[ y ] )
		tata[ y ] = x;
	else
	{
		tata[ x ] = y;
		if ( rang[ x ] == rang[ y ] )
			rang[ y ]++;
	}
}

int main( void )
{
	freopen ( in, "r", stdin );
	freopen ( out, "w", stdout );

	scanf ( "%d %d %d %d\n", &N, &M, &X, &Y );

	int i, j, cost, K = 0;
	char sep[] = " \n";
	char *p;
	char buffer[10000000];

	fread ( buffer, sizeof(char), 10000000, stdin );
	
	p = strtok ( buffer, sep );
	i = atoi ( p );
	p = strtok ( 0, sep );
	j = atoi ( p );
	p = strtok ( 0, sep );
	cost = atoi ( p );
/*
	M--;
	//CST[ cost ].pb( mp( i, j ) );
	K = maxim ( K, cost );

	for ( ; M; --M )
	{
		p = strtok ( 0, sep );
		i = atoi ( p );
		p = strtok ( 0, sep );
		j = atoi ( p );
		p = strtok ( 0, sep );
		cost = atoi ( p );
		//CST[ cost ].pb( mp(i,j) );
		K = maxim ( K, cost );
	}

	vector < pair<int,int> >::iterator it;

	for ( i = 1; i <= N; ++i ) tata[ i ] = i, rang[i] = 0;
	for ( i = 1; i <= K; ++i )
	{
		for ( it = CST[ i ].begin(); it != CST[ i ].end(); ++it ) 
		{
			if ( Find((*it).first ) != Find( (*it).second ) )
				Union ( Find((*it).first), Find((*it).second) );
		}
		if ( Find ( X ) == Find ( Y ) ) { printf ( "%d\n", i ); break; }
	}
	*/
	return 0;
}