Cod sursa(job #191167)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 25 mai 2008 16:04:20
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#define IN "srevni.in"
#define OUT "srevni.out"
#define Nmax 100001

int a[Nmax][100];
int pret[Nmax];
int n,m;

void scan()
{
	freopen(IN, "r",stdin);
	freopen(OUT, "w",stdout);
	scanf("%d%d", &n,&m);
	for(int i=1;i<=n;++i)
		scanf("%d", &pret[i]);
}	

void try_all(int x)
{
	//for(int i=1;i<=a[x][0];++i)
		
	
	
	
}

void solve()
{
	int x,y;
	for(int i=1;i<=m;++i)
	{
		scanf("%d %d", &x,&y);
		a[x][++a[x][0]]=y;
		if(pret[x] > pret[y])
			pret[x]=pret[y];
	}
	for(int i=1;i<=n;++i)
		if(pret[i]!=1)
			for(int j=1;j<=a[i][0];++j)
				for(int k=1;k<=a[a[i][j]][0];++k)
				{
					//int aux=try_all(j);
					//if(pret[i] > aux);
					//	pret[i]=aux;
					if(pret[ a[ a[i][j] ] [k] ] < pret[i])
						pret[i]=pret [ a [a[i][j]] [k] ];
				}	
	for(int i=1;i<=n;++i)
		printf("%d ",pret[i]);
	printf("\n");
}

int main()
{
	scan();
	solve();
	return 0;
	
}