Pagini recente » Cod sursa (job #471529) | Monitorul de evaluare | Cod sursa (job #2948609) | Cod sursa (job #1866781) | Cod sursa (job #1436365)
#include <fstream>
#include <vector>
#include <bitset>
#define DIM 100002
using namespace std;
ifstream fin("srevni.in");
ofstream fout("srevni.out");
vector <int> v[DIM];
int N,M,MINI[DIM];
bitset <DIM> viz;
int d[DIM],S[DIM];
int k;
char s[1000000];
void DFS(int x){
viz[x]=1;
for(int i=0;i<v[x].size();i++)
if(!viz[v[x][i]])
DFS(v[x][i]);
S[++k]=x;
}
int main(){
fin>>N>>M;
fin.get();
fin.get(s,1000000);
N=0;
for(int i=0;s[i]!=0;i++){
if(s[i]>='0' && s[i]<='9'){
N++;
while(s[i]>='0' && s[i]<='9')
MINI[N]=MINI[N]*10+s[i]-'0',i++;
}
}
while(M--){
int x,y;
fin>>x>>y;
v[x].push_back(y);
d[y]++;
}
for(int i=1;i<=N;i++)
if(d[i]==0)
DFS(i);
for(int i=1;i<=N;i++)
for(int j=0;j<v[i].size();j++)
MINI[i]=min(MINI[i],MINI[v[i][j]]);
for(int i=1;i<=N;i++)
fout<<MINI[i]<<" ";
fout<<"\n";
fin.close();fout.close();
return 0;
}