Cod sursa(job #3232942)

Utilizator popescu_georgePopescu George popescu_george Data 2 iunie 2024 07:23:27
Problema Sortare topologica Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("sortaret.in");
ofstream G("sortaret.out");
#define Z 2048
int n,m,i,j,p=Z,q;
vector<int> a[50001];
bitset<50001> b;
char s[Z],t[Z];
inline char A()
{
    if(p==Z)
        F.read(s,Z),p=0;
    return s[p++];
}
int B()
{
    char c;
    for(c=A();!isdigit(c);c=A());
    int n=0;
    for(;isdigit(c);n=n*10+c-48,c=A());
    return n;
}
inline void C()
{
    if(q==Z)
        G.write(s,Z),q=0;
}
void D(int n)
{
    int k=0,c[5];
    for(;n;c[k++]=n%10,n/=10);
    for(;k;t[q++]=c[--k]+48,C());
    t[q++]=' ',C();
}
void E(int i)
{
    b[i]=1;
    for(int j:a[i])
        if(!b[j])
            E(j);
    D(i);
}
int main()
{
    for(n=B(),m=B();m--;i=B(),j=B(),a[j].push_back(i));
    for(i=1;i<=n;++i)
        if(!b[i])
            E(i);
    return G.write(t,q),0;
}