文章

85

粉丝

0

获赞

476

访问

9.7k

头像
确定比赛名次 题解:拓扑排序模版
P1566 中山大学机试题
发布于2026年3月8日 12:46
阅读数 92

#include <bits/stdc++.h>
using namespace std;
const int Max =505;

bool mpt[Max][Max];
vector<int> edge[Max];
int indegree[Max];
void Topu(int N) {
    priority_queue<int,vector<int>,greater<int> > q;
    for (int i = 1; i <= N; i++) {
        if (indegree[i] == 0) {
            q.push(i);
        }
    }
        int count = 0;
        while (!q.empty()) {
            int u = q.top();q.pop();
            count++;
            if (count==N) {
                cout << u << endl;
            }
            else {
                cout << u << " ";
            }
            for (int j = 0; j <edge[u].size(); j++) {
                int v = edge[u][j];
                indegree[v]--;
                if (indegree[v] == 0) {
                    q.push(v);
                }
            }
        }
    }
int main() {
    int n,m;
    while (cin >> n >> m) {
        memset(mpt,0,sizeof(mpt)...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发