Cod sursa(job #2487725)

Utilizator SavanderianAlexandru Balan Savanderian Data 5 noiembrie 2019 18:15:33
Problema Sortare topologica Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");

bool comp(pair<int,int> fi,pair<int,int> se){

if(fi.second>se.second)
    return false;
return true;

}

int main()
{

    int n,k;
    f>>n>>k;
pair<int,int> p[k+1];
    for(int i=1;i<=k;i++)
    {
        int in,ul;
            f>>in>>ul;
        p[i].first=in;
        p[i].second=ul;
    }

pair<int,int> grad[n+1];

    for(int i=1;i<=n;i++)
    {
        int marime=0;
            for(int j=1;j<=k;j++)
                    if(i==p[j].second)
                        marime++;
        grad[i].first=i;
        grad[i].second=marime;
    }

    sort(grad+1,grad+n+1,comp);



    for(int i=1;i<=n;i++)
    {
g<<grad[i].first<<" ";
    bool verif[n+1]={false};
        for(int t=1;t<=k;t++)
            if(grad[i].first==p[t].first&&!verif[p[t].second])
            {
                verif[p[t].second]=true;
                for(int u=1;u<=n;u++)
                        if(grad[u].first==p[t].second)
                            grad[u].second--,u=n+1;
            }
        sort(grad+i+1,grad+n+1,comp);


    }

    return 0;
}