文章

24

粉丝

0

获赞

170

访问

3.6k

头像
确定比赛名次 题解:
P1566 中山大学机试题
发布于2026年3月14日 16:03
阅读数 23

#include<bits/stdc++.h>
using namespace std;

const int N = 505;
struct Edge{
    int from;
    int to;
};

int n,m;
int indegree[N];
vector<Edge> e[N];

void topo(){
    priority_queue<int,vector<int>,greater<int>>q;
    for(int i = 1; i <= n; i++){
        if(indegree[i] == 0){
            q.push(i);
        }
    }
    while(!q.empty()){
        int u = q.top();
        q.pop();

        printf("%d ",u);

        for(int i = 0; i < e[u].size(); i++){
            Edge next = e[u][i];
            indegree[next.to] --;

            if(indegree[next.to] == 0){
                q.push(next.to);
            }
        }
    }
    printf("\n");
}

int main(){
    while(cin >> n >> m){
        for(int i = 1; i <= n; i++){
            indegree[i] = 0;
            e[i].clear();
        }

        for(int i = 1; i <= m; i++){
            int u,v;
            cin >> u >> v;
     ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发