Cod sursa(job #530321)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 7 februarie 2011 15:41:56
Problema PScNv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#include<vector>
#include<cstring>
#define mp make_pair
#define NMAX 250001
using namespace std;
FILE *f=fopen("pscnv.in","r");
FILE *g=fopen("pscnv.out","w");
int N,M,X,Y,ok,m,pas,viz[NMAX];
vector <pair <int,int> > a[NMAX];
void df(int nod){
	viz[nod]=pas;
	if(nod == Y)
	{ok=1;return;}
	for(unsigned int i=0;i<a[nod].size() && !ok;i++){
		if( viz[a[nod][i].first]!=pas && a[nod][i].second <=m)
			df(a[nod][i].first);		
	}
}
int main(){
	fscanf(f,"%d%d%d%d",&N,&M,&X,&Y);
	for(register int i=1;i<=M;++i)
	{  int x,y,z;
	   fscanf(f,"%d%d%d",&x,&y,&z);
	   if(x!=y)
	   a[x].push_back(mp(y,z));
	}
    int p=1,u=1000,sol;pas=1;
	while(p<=u){
		m=(p+u)/2,ok=0;
		df(X);
		if(ok) sol=m,u=m-1;
		else p=m+1;		
		pas++;
	}
	fprintf(g,"%d",sol);
return 0;
}