রবিবার, ২ এপ্রিল, ২০১৭

UVA 10305 - Ordering Tasks

#include<bits/stdc++.h>
using namespace std;
main()
{
    long n,m;
    while(cin>>n>>m)
    {
        long i,vis[105][105]={0},indegree[105]={0},a,b,u;
        queue<long>q;
        vector<long>vec;
        if(n==0&&m==0)
            break;
        for(i=0;i<m;i++)
        {
            cin>>a>>b;
            vis[a][b]=1;
            indegree[b]++;
        }
        for(i=1;i<=n;i++)
        {
            if(indegree[i]==0)
            {
                q.push(i);
                vec.push_back(i);
            }
        }
        while(!q.empty())
        {
            u=q.front();
            q.pop();
            for(i=1;i<=n;i++)
            {
                if(vis[u][i]==0)
                    continue;
                indegree[i]--;
                if(indegree[i]==0)
                {
                    q.push(i);
                    vec.push_back(i);
                }
            }
        }
        for(i=0;i<vec.size();i++)
        {
            if(i==0)
            {
                cout<<vec[i];
            }
            else
                cout<<" "<<vec[i];
        }
        cout<<endl;
    }
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Factorization with prime Sieve

vector <int> prime; char sieve[1000009]; int N=1000009; void primeSieve ( ) { sieve[0] = sieve[1] = 1; prime.push_back(2); ...