求改T ^ T,不知道哪错了
  • 板块P1807 最长路
  • 楼主better_Z
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/10 22:26
  • 上次更新2023/11/3 10:38:40
查看原帖
求改T ^ T,不知道哪错了
865793
better_Z楼主2023/7/10 22:26
#include<iostream>
#include<cmath>
#include<cstring>
#define maxx 1510
#include<queue>
using namespace std;
vector<int>p[maxx];
queue<int>q;
int n,m,dist[maxx][maxx],f[maxx],ans,tmp;
bool visx[maxx],visy[maxx];
int main(){
    cin>>n>>m;
    memset(dist,0,sizeof(dist));
    memset(visx,0,sizeof(visx));
    memset(visy,0,sizeof(visy));
    for(int i=1;i<=m;i++){
        int x,y;
        cin>>x>>y>>tmp;
        if(visx[x]==1&&visy[y]==1&&tmp>dist[x][y])dist[x][y]=tmp;//取最远的路
        visx[x]=1,visy[y]=1;
        p[x].push_back(y);
    }
    q.push(1);
    f[1]=0;
    while(!q.empty()){
        int x=q.front();
        q.pop();
        for(int i=0;i<p[x].size();i++){
            int y=p[x][i];
            f[y]=max(f[y],f[x]+dist[x][y]);
            q.push(y);
        }
    }
    if(f[n]==0)cout<<"-1";
    else cout<<f[n];
    return 0;
}
2023/7/10 22:26
加载中...