Cod sursa(job #3137886)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 15 iunie 2023 20:38:29
Problema PScNv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
//Ilie Dumitru
#include<cstdio>
#include<vector>
const int NMAX=250005;
const int MAX=1024;

struct edge
{
	int node, w;
};

int N;
int min[NMAX];
std::vector<edge> G[NMAX];
std::vector<int> nivel[MAX];

int solve(int x, int y)
{
	int i, j, k, aux, m;

	for(i=0;i<N;++i)
		min[i]=MAX;
	min[x]=0;
	nivel[0].push_back(x);
	for(i=0;i<MAX;++i)
	{
		for(j=0;j<(int)nivel[i].size();++j)
		{
			if(min[x=nivel[i][j]]==i)
			{
				if(x==y)
					return i;

				for(k=0;k<(int)G[x].size();++k)
				{
					aux=G[x][k].node;
					m=std::max(G[x][k].w, i);
					if(min[aux]>m)
					{
						nivel[m].push_back(aux);
						min[aux]=m;
					}
				}
			}
		}
	}

	return 0;
}

int main()
{
	FILE* f=fopen("pscnv.in", "r"), *g=fopen("pscnv.out", "w");
	//FILE* f=stdin, *g=stdout;
	int i, a, b, c, M, x, y;

	fscanf(f, "%d%d%d%d", &N, &M, &x, &y);
	for(i=0;i<M;++i)
	{
		fscanf(f, "%d%d%d", &a, &b, &c);
		G[a-1].push_back({b-1, c});
	}

	fprintf(g, "%d\n", solve(x-1, y-1));

	fclose(f);
	fclose(g);
	return 0;
}