社区讨论
64pts死循环求调
P1807最长路参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mhjkqxw8
- 此快照首次捕获于
- 2025/11/04 04:10 4 个月前
- 此快照最后确认于
- 2025/11/04 04:10 4 个月前
因为太菜了不会写 dfs,所以不知道什么时候回溯
目前貌似是跑到 n 号点之后卡死了,求助求助
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
long long n,m,tot,head[500005],dp[1505];
struct node{
int from,to,nxt,w;
}e[100005];
inline void add_edge(int u,int v,int w){
e[++tot].from=u;
e[tot].to=v;
e[tot].w=w;
e[tot].nxt=head[u];
head[u]=tot;
return;
}
int cnt=0;
inline void dfs(int now){
// cout<<++cnt<<endl;
for(int i=head[now];i;i=e[i].nxt){
int v=e[i].to;
dp[v]=max(dp[v],dp[now]+e[i].w);
dfs(v);
}
return;
}
signed main(){
// freopen("P1807_1.in","r",stdin);
cin>>n>>m;
for(int i=1;i<=n;i++){
dp[i]=INT_MIN;
}
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
add_edge(u,v,w);
}
dp[1]=0;
dfs(1);
if(dp[n]==INT_MIN){
cout<<-1<<endl;
return 0;
}
cout<<dp[n]<<endl;
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...