DFS 6个WA求调
查看原帖
DFS 6个WA求调
964610
kkksc03_ist_ein_Affe楼主2024/12/22 10:56
#include<bits/stdc++.h>
using namespace std;
struct node{
	int b,z;//b为可达点 
};
vector<node>a[1505];//邻接表 
int v[50005];//标记 
int n,m;
int mi=INT_MAX;//因为是取负边 
bool f=false;//是否到达过 
void dfs(int x,int cnt){
//	cout<<"x:"<<x<<" cnt:"<<cnt<<endl;
	if(cnt>=mi)return;//优化 
	if(x==n){
		f=true;//是否到达过 
		mi=min(mi,cnt);//取最小 
		return;
	}
	for(int i=0;i<a[x].size();i++){
		if(v[a[x][i].b]==0){
			v[a[x][i].b]=1;
			dfs(a[x][i].b,cnt+a[x][i].z);
			v[a[x][i].b]=0;
		}
	}//dsf 
}

int main(){
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int x,y,z;
		cin>>x>>y>>z;
		a[x].push_back({y,-z});//负边 
	}
	dfs(1,0);
	if(f) cout<<-mi;
	else cout<<-1;//判断 
	return 0;
}
/*
5 5
1 3 10
2 4 8
4 5 7
1 5 0
3 4 10
^自创样例  
*/
2024/12/22 10:56
加载中...