dfs法46分求助
  • 板块P1807 最长路
  • 楼主liveless
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/22 11:40
  • 上次更新2024/1/22 12:50:00
查看原帖
dfs法46分求助
1010774
liveless楼主2024/1/22 11:40
#include <bits/stdc++.h>
using namespace std;

long long n,m;
long long flag[100010];
long long isf[100010];
vector<pair<long long,long long> >mp[100010];

long long dfs(long long x,long long sum){
	if(x==n){
		return sum;
	}
	//cout<<x<<endl;
	long long ans=(long long)(-1e18);
	for(auto i : mp[x]){
		if(isf[i.first]==0){
			isf[i.first]=1;
			flag[i.first]=dfs(i.first,sum+i.second); 
		}
		if(flag[i.first]!=(long long)(-1e18)){
			ans=max(ans,flag[i.first]);
		}
	}
	return ans;
}

int main(){
	//freopen("P1807_1.in","r",stdin);
	cin>>n>>m;
	for(long long i=1;i<=m;i++){
		long long u,v,w;
		cin>>u>>v>>w;
		mp[u].push_back(pair<int,int>(v,w));
	}
	long long ans=dfs(1,0);
	if(ans==(long long)(-1e18)){
		cout<<-1<<endl;
	}
	else{
		cout<<ans<<endl;
	}
}
2024/1/22 11:40
加载中...