奇怪的问题
查看原帖
奇怪的问题
289296
zymooll楼主2021/9/5 21:08
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
int v[40],ys[40][40];
int bj[40];
map<string,int>p;
inline int add(){
	int jl=0;
	for(int i=1;i<n;i++){
		if(!bj[i])continue;
		for(int j=i+1;j<=n;j++){
			if(!bj[j])continue;
			jl+=ys[i][j];
		}
	}
	return jl;
}
void dfs(int f,int js,int sd){
	if(sd==7){
		ans=max(ans,js+add());
		return;
	}
	for(int i=f+1;i<=n+1;i++){
		bj[f]=1;
		dfs(i,js+v[f],sd+1);
		bj[f]=0;
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		string name;int np;
		cin>>name>>np;
		p[name]=i;
		v[i]=np;
	}
	for(int i=1;i<=m;i++){
		string name1,name2;int np;
		cin>>name1>>name2>>np;
		int ys1=p[name1],ys2=p[name2];
		ys[ys1][ys2]+=np,ys[ys2][ys1]+=np;
	}
	for(int i=1;i<=n;i++){
		dfs(i,0,1);
	}
	cout<<ans;
	return 0;
}

其中dfs函数中for(int i=f+1;i<=n+1;i++)若不加+1而是i<=n就会错,没明白这个问题。

2021/9/5 21:08
加载中...