一开始用的DFS拿了64分,改成BFS之后变成46分了T^T
最近做题做哭了
以下46分代码:
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
struct edge{
int to,d;
};
vector<edge> p[50005];
int n,m;
int q[50005],d[50005],l=1,r=2,ans=0;
bool flag1=0;
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
p[u].push_back((edge){v,w});
}
while(l<r){
for(int i=0;i<p[l].size();i++){
q[r]=p[l][i].to;
d[r]=p[l][i].d+d[l];
if(q[r]==n){
ans=max(ans,d[r]);
flag1=1;
}
r++;
}
l++;
}
if(!flag1) cout<<-1;
else cout<<ans;
return 0;
}