比赛 2024暑假C班集训A 评测结果 WWWTEEEEEW
题目名称 行动!行动! 最终得分 0
用户昵称 黄天乐 运行时间 3.212 s
代码语言 C++ 内存使用 3.54 MiB
提交时间 2024-07-10 10:18:36
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,k,s,e;
const int MAXN=605;
int g[MAXN][MAXN];
int u[6005],v[6006],w[6006];
void f(){
	for(int k=0;k<=n-1;k++){
		for(int i=0;i<=n-1;i++){
			for(int j=0;j<=n-1;j++){
				g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
			}
		}
	}
}
int ans=1e9;
int main(){
	freopen("move.in","r",stdin);
	freopen("move.out","w",stdout);
	cin>>n>>m>>k;
	cin>>s>>e;
	for(int i=1;i<=m;i++){
		cin>>u[i]>>v[i]>>w[i];
	}
	if(k==1){
		for(int i=1;i<=m;i++){
			memset(g,0x3f,sizeof(g));
			for(int j=1;j<=m;j++){
				if(i!=j){
					g[u[j]][v[j]]=g[v[j]][u[j]]=min(g[u[j]][v[j]],w[j]);
				}else g[u[j]][v[j]]=g[v[j]][u[j]]=0;
			}
			f();
			ans=min(ans,g[s][e]);
		}
	}else {
		for(int i=1;i<=m;i++){
			g[u[i]][v[i]]=g[v[i]][u[i]]=min(g[u[i]][v[i]],w[i]);
		}
		f();
		ans=g[s][e];
	}
	cout<<ans<<endl;
	return 0;
}