Pagini recente » Cod sursa (job #995985) | Cod sursa (job #546621) | Cod sursa (job #1832165) | Cod sursa (job #738121) | Cod sursa (job #191167)
Cod sursa(job #191167)
#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;
}