Cod sursa(job #2424997)

Utilizator alex_galatanAlex Galatan alex_galatan Data 24 mai 2019 01:34:05
Problema Sortare topologica Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream f("sortaret.in");
ofstream g("sortaret.out");

struct nod{
    int nr, ordin, vizitat;
    vector <int> legaturi;
};

void parcurge(int n, vector<nod> noduri)
{
    int i, j, k;



    for (j = 0; j < n; j++)
        for (i = 0; i < n; i++)
            if (noduri[i].ordin == 0 && noduri[i].vizitat == 0)
            {
                noduri[i].vizitat = 1;
                g<<i + 1<<" ";

                for (k = 0; k < noduri[i].legaturi.size(); k++)
                    noduri[noduri[i].legaturi[k] - 1].ordin--;
            }
}

int main()
{
    vector<nod> noduri;
    int n, m, i, a, b;

    f>>n>>m;
    for (i = 0; i  < n; i++)
    {
        nod nou;
        nou.nr = i + 1;
        nou.ordin = 0;
        nou.vizitat = 0;
        noduri.push_back(nou);
    }

    for (i = 0; i < m; i++)
    {
        f>>a>>b;
        noduri[b-1].ordin++;
        noduri[a-1].legaturi.push_back(b);
    }

    parcurge(n, noduri);

    return 0;
}