社区讨论

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 条回复,欢迎继续交流。

正在加载回复...