题目链接 http://acm.hust.edu.cn/vjudge/problem/22156
从a点到b点, 找到一条路径,
使得这条路径上的所有噪音中最大的值是所有路径中最小的
求这个最小值
我是先弄出一个最小生成树 然后将图存起来
对于每个提问 都dfs一遍 将路径的权值存入path[]
当遍历到终点时 取path[]中的最大值
其他思路:
还可以用Kruskal算法,按照Kruskal算法的步骤,一条边一条边的加入树中,
每加入一次,就判断所有要问的起点和终点是否已经连通,
一旦有连通的,那么那条路径中的最大值便是当前加入的这条边的权值,
因为加入的边是按照从小到大顺序加入的。
我的:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
其他思路:
#include
#include
#include
#define N 1005
using namespace std;
int n,m,Q, f[N],rank[N],ans[N*10];
bool vis[N*10];
struct Edge{
int u,v,val;
friend bool operator<(const Edge&a,const Edge&b){
return a.val < b.val;
}
}arr[N];
struct Query{
int id, u, v;
}q[N*10];
inline void init(){
for(int i=0; irank[b])
f[b]=a;
else{
if(rank[a]==rank[b])
++rank[b];
f[a]=b;
}
return true;
}
int main(){
int a,b,c,cas=1;
while(~scanf("%d%d%d",&n,&m,&Q)){
if(!n&&!m&&!Q) break;
for(int i=0; i