用起点dfs-70fps,求调
查看原帖
用起点dfs-70fps,求调
970753
fangjunfeng34楼主2025/7/23 16:24

题目

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=110;
struct node{
	int x,len;
};
vector<node> tu[N];
bool v[N][N],v1[N];
int n,m,d,a,b,min_len=INT_MAX;
void dfs(int x,int fa,int len){
	if(x==b){
		min_len=min(min_len,len);
		return ;
	}
	for(int i=0;i<tu[x].size();i++){
		if(tu[x][i].x==fa) continue;
		else if(v[x][tu[x][i].x] && !v1[tu[x][i].x]){
			v1[tu[x][i].x]=true;
			dfs(tu[x][i].x,x,len);
		} 
		else if(!v1[tu[x][i].x]){
			v1[tu[x][i].x]=true;
			dfs(tu[x][i].x,x,len+tu[x][i].len);
		} 
	}
}
signed main(){
	//freopen("P3905_4.in","r",stdin);
	memset(v,true,sizeof(v));
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x,y,len;
		cin>>x>>y>>len;
		tu[x].push_back({y,len});
		tu[y].push_back({x,len});
	}
	cin>>d;
	for(int i=1;i<=d;i++){
		int x,y;
		cin>>x>>y;
		v[x][y]=false;
		v[y][x]=false;
	}
	cin>>a>>b;
	v1[a]=true;
	dfs(a,a,0);
	cout<<min_len;
	return 0;
} 
2025/7/23 16:24
加载中...