Pagini recente » Diferente pentru teorema-chineza-a-resturilor intre reviziile 55 si 54 | Rating Lupau Claudiu (ClaudiuAL) | Cod sursa (job #1176192) | Istoria paginii utilizator/ileoheaven | Cod sursa (job #475046)
Cod sursa(job #475046)
#include<stdio.h>
int **a, *b, *c, *viz index;
int n, m;
void df(int x){
viz[x] = 1;
for(int i=1;i<=n;i++)
if(!viz[i] && a[x][i]){
c[index++] = i;
df(i);
}
}
void sort(){
for(int i=1;i<=n;i++)
if(!b[i]){
c[index++] = i;
df(i);
}
}
int main()
{
FILE *ofile, *ifile;
ifile = fopen("sortaret.in", "r");
fscanf(ifile, "%i %i", &n, &m);
a = new int*[n+1];
for(int i=0;i<=n;i++)
a[i] = new int[n+1];
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++)
a[i][j] = 0;
b = new int[n+1];
c = new int[n];
viz = new int[n+1];
for(int i=0;i<=n;i++)
b[i] = viz[i] = 0;
for(int i=0; i<m; i++){
int x, y;
fscanf(ifile, "%i %i", &x, &y);
a[x][y] = 1;
b[y] = 1;
}
fclose(ifile);
sort();
ofile = fopen("sortaret.out", "w");
for(int i=0;i<index;i++)
fprintf(ofile, "%i ", c[i]);
fclose(ofile);
return 0;
}