未学拓扑排序,求问此做法错哪
  • 板块P1113 杂务
  • 楼主acommonman
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/21 17:45
  • 上次更新2024/12/21 21:18:37
查看原帖
未学拓扑排序,求问此做法错哪
1373219
acommonman楼主2024/12/21 17:45
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf = 1e18;
const int N = 1e4 + 7;

vector<int>e[N];
int ti[N], len[N], Max = 0;//Max记录最长时间
bool v[N] = {};//记录入度
void dfs(int x, int tm){
    if(tm <= ti[x])return ;
    printf("node %d\n", x);
    ti[x] = tm, Max = max(Max, tm);
    for(auto i : e[x]){
        dfs(i, tm + len[i]);
    }
}

int main(){
    int n;
    scanf("%d", &n);
    memset(v, 0, sizeof v);
    while(n--){
        int Cin = 0, d;
        scanf("%d", &d);
        scanf("%d", &len[d]);
        while(scanf("%d", &Cin) != EOF){
            if(!Cin)break;
            e[Cin].push_back(d);//邻接表存图
            v[d] = 1;//入度
        }
    }
    for(int i = 1; i <= n; i++){
        if(!v[i])dfs(i, len[i]);//选没有入边的点作为起点
    }
    printf("%d\n", Max);
    return 0;
}

首先输入好像就不对劲,但是不会改,球球帮忙

2024/12/21 17:45
加载中...