提供一组HACK
  • 板块P1807 最长路
  • 楼主WsW_花逝爆零人
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/17 10:15
  • 上次更新2023/11/3 03:13:11
查看原帖
提供一组HACK
349824
WsW_花逝爆零人楼主2023/8/17 10:15

数据:

5 4
1 4 1
4 5 1
3 2 1
2 4 1

显然答案是 2。
题解区试了几篇,都没问题。
被HACK代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
    int to,next;
    int val;
}edg[50005];
int head[1505];
int elen;
int in[1505];
ll dis[1505];
queue<int>q;

int n,m;
int u,v,w;

void add(int fr,int to,int w){
    ++elen;
    ++in[to];
    edg[elen].to=to;
    edg[elen].val=w;
    edg[elen].next=head[fr];
    head[fr]=elen;
}

ll tp(int s,int ed){
    for(int i=1;i<=n;i++){
        if(in[i]==0&&i>1){
            for(int j=head[i];j;j=edg[j].next){
                --in[edg[j].to];
            }
        }
        dis[i]=-1;
    }
    dis[s]=0;
    q.push(s);
    while(!q.empty()){
        int x=q.front();
        q.pop();
        for(int i=head[x];i;i=edg[i].next){
            dis[edg[i].to]=max(dis[edg[i].to],dis[x]+edg[i].val);
            --in[edg[i].to];
            if(!in[edg[i].to])q.push(edg[i].to);
        }
    }
    return dis[ed];
}

int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&u,&v,&w);
        add(u,v,w);
    }
    
    return !printf("%lld",tp(1,n));
}
2023/8/17 10:15
加载中...