Tuesday, April 26, 2016

Topological Sort Source Code ( 10305 - Ordering Tasks )

Problem Link : https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1246

Solve :

#include<bits/stdc++.h>

using namespace std;

vector <int> v[103],top;

int indgre[103];

int main()
{

    int n,e,i,a,b,j,k,l,sp;

    while(cin>>n>>e)
    {
        sp=0;

        if(n==0&&e==0) break;
        memset(indgre,0,sizeof(indgre));
        for(i=1; i<=e; i++)
        {
            cin>>a>>b;
            v[a].push_back(b);
            indgre[b]++;
        }

        for(i=1; i<=n; i++)
        {
            if(indgre[i]==0)
            {
                top.push_back(i);
            }
        }

        for(i=0; i<top.size(); i++)
        {
            k=top[i];

            for(j=0; j<v[k].size(); j++)
            {
                l=v[k][j];
                indgre[l]--;

                if(indgre[l]==0) top.push_back(l);
            }
        }
        for(i=0; i<top.size(); i++)
        {
            if(sp==0) cout<<top[i];
            else cout<<" "<<top[i];
            sp++;
        }
        cout<<endl;
        top.clear();
        for(i=0; i<103; i++)
        {
            v[i].clear();
        }
    }

}



No comments:

Post a Comment