7-25 Harry Potter's Exam

题目

题意:哈利波特要考试,考试内容是将a物品用长度为c的魔法变成物品b,问哈利波特选取哪个物品能花费最小的魔法代价实现与其他所有物品的变换
tip:Floyd 

#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>>dis(103,vector<int>(103,1e9));
int  n,m;
void floyd() {
	for(int k=1; k<=n; ++k)
		for(int i=1; i<=n; ++i)
			for(int j=1; j<=n; ++j)
				if(dis[i][j]>dis[i][k]+dis[k][j])
					dis[i][j]=dis[i][k]+dis[k][j];
}
int main() {
	cin>>n>>m;
	for(int i=0; i<m; ++i) {
		int a,b,c;
		cin>>a>>b>>c;
		dis[a][b]=dis[b][a]=c;
	}
	floyd();
	int minindex=0,minlen=1e9;
	for(int i=1; i<=n; ++i) {
		int maxl=0;
		for(int j=1; j<=n; ++j)
			if(i!=j&&dis[i][j]>maxl)//找出一行中最大值
				maxl =dis[i][j];
		if(maxl<minlen) {//在所有行最大值中取最小值
			minlen=maxl;
			minindex=i;
		}
	}
	if(minlen==1e9)
		cout<<0<<endl;
	else cout<<minindex<<" "<<minlen<<endl;
	return 0;
}
发布了393 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40991687/article/details/104302345