//暴力
#include <bits/stdc++.h>
using namespace std;
int Edge[510][510];
int Indegree[510];
int vis[510];
int main()
{
int n, m;
while(cin >> n >> m)
{
memset(Edge, 0, sizeof(Edge));
memset(Indegree, 0, sizeof(Indegree));
memset(vis, 0, sizeof(vis));
for(int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
if(!Edge[u][v])
{
Edge[u][v] = 1;
Indegree[v] ++;
}
}
for(int k = 1; k <= n; k++)
{
for(int i = 1; i <= n; i++)
{
if(!Indegree[i] && !vis[i])
{
vis[i] = 1;
k == n ? cout << i << endl : cout << i << ' ';
for(int j = 1; j <= n; j++)
if(Edge[i][j])
{
Indegree[j] --;
}
break;
}
}
}
}
return 0;
}
//
#include <bits/stdc++.h>
using namespace std;
int n, m;
int Edge[510][510];
int Indegree[510];
queue<int >Q1;
int Topsort()
{
priority_queue<int,vector<int>, greater<int> >Q2;
for(int i = 1; i <= n; i++)
{
if(Indegree[i] == 0)
{
Q2.push(i);
}
}
while(!Q2.empty())
{
int tmp = Q2.top();
Q2.pop();
Q1.push(tmp);
for(int i = 1; i <= n; i++)
{
if(Edge[tmp][i])
{
Indegree[i] --;
if(Indegree[i] == 0)
{
Q2.push(i);
}
}
}
}
}
int main()
{
while(cin >> n >> m)
{
memset(Edge, 0, sizeof(Edge));
memset(Indegree, 0, sizeof(Indegree));
while(m --)
{
int u, v;
cin >> u >> v;
if(!Edge[u][v])
{
Indegree[v] ++;
Edge[u][v] = 1;
}
}
Topsort();
cout << Q1.front();
Q1.pop();
while(!Q1.empty())
{
cout << ' ' << Q1.front();
Q1.pop();
}
cout << endl;
}
return 0;
}
HDU 1285 确定比赛名次
最新推荐文章于 2022-04-20 11:12:09 发布