Mai intai trebuie sa te autentifici.
Cod sursa(job #1139313)
Utilizator | Data | 10 martie 2014 23:58:10 | |
---|---|---|---|
Problema | Sortare topologica | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.76 kb |
#include<cstdio>
#include<vector>
using namespace std;
vector<int>l[50100];
int n,m,i,j,x,y,p,u,c[100100],v[100100];
FILE *f,*g;
int main(){
f=fopen("sortaret.in","r");
g=fopen("sortaret.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++){
fscanf(f,"%d%d",&x,&y);
l[x].push_back(y);
v[y]++;
}
for(i=1;i<=n;i++){
if(v[i]==0){
c[++u]=i;
}
}
p=1;
while(p<=u){
x=p;
for(i=0;i<l[x].size();i++){
v[l[x][i]]--;
if(v[l[x][i]]==0){
c[++u]=l[x][i];
}
}
p++;
}
for(i=1;i<=n;i++){
fprintf(g,"%d ",c[i]);
}
fclose(f);
fclose(g);
return 0;
}