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();
}
}
}
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