标签:int fat view hid and arm std 表示 vector
给你一个有nn个点和mm条边的无向连通图,每条边都有一个权值ww.我们定义,对于一条路径,它的Charm valueCharm value为该路径上所有边的权值的最大值与最小值的差.询问从11到nn的所有路径的Charm valueCharm value的最小值.
Input
第一行有两个整数n,m(1≤n≤200,n−1≤m≤1000)n,m(1≤n≤200,n−1≤m≤1000),表示该图有nn个点和mm条边.接下来mm行,每行三个整数u,v,w(1≤u,v≤n,1≤w≤1000000)u,v,w(1≤u,v≤n,1≤w≤1000000),表示点uu和点vv之间有一条权值为ww的边.
Output
输出一个数,即从11到nn的所有路径的Charm valueCharm value的最小值.
Sample input and output
Sample Input | Sample Output |
---|---|
4 43 4 12 3 21 2 42 4 3 |
1 |
Solve:
排序边权,枚举最小的边权,然后当1和n在同一个集合里的时候就更新答案,注意更新之前要判断1和n是不是在同一个集合里
Code:
1 #include <bits/stdc++.h> 2 using namespace std; 3 static const int MAXN = 1e3 + 10; 4 static const int OO = 0x3fffffff; 5 struct Node 6 { 7 int u , v , w; 8 }; 9 10 int father[MAXN]; 11 int high[MAXN]; 12 vector<Node> data; 13 int n , m; 14 int ans = OO; 15 16 void Init() 17 { 18 for(int i = 0 ; i <= n ; ++i) 19 { 20 father[i] = i; 21 high[i] = 0; 22 } 23 } 24 25 int FindSet(int x) 26 { 27 if(x != father[x]) 28 father[x] = FindSet(father[x]); 29 return father[x]; 30 } 31 32 bool Same(int x , int y) 33 { 34 return (FindSet(x) == FindSet(y)); 35 } 36 37 void Unite(int x , int y) 38 { 39 x = FindSet(x) , y = FindSet(y); 40 if(x != y) 41 { 42 if(high[x] > high[y]) 43 father[y] = x; 44 else 45 { 46 father[x] = y; 47 if(high[x] == high[y]) 48 ++high[y]; 49 } 50 } 51 } 52 53 int main() 54 { 55 scanf("%d%d" , &n , &m); 56 for(int i = 1 ; i <= m ; ++i) 57 { 58 int a , b , c; 59 scanf("%d%d%d" , &a , &b , &c); 60 data.push_back({a , b , c}); 61 } 62 63 sort(data.begin() , data.end() , [](Node a , Node b){return a.w < b.w;}); 64 int mx , mi; 65 for(int i = 0 ; i < m ; ++i) 66 { 67 Init(); 68 mi = data[i].w; 69 mx = mi; 70 Unite(data[i].u , data[i].v); 71 for(int j = i + 1 ; j < m ; ++j) 72 { 73 if(Same(1 , n)) 74 break; 75 if(!Same(data[j].u , data[j].v)) 76 { 77 Unite(data[j].u , data[j].v); 78 mx = data[j].w; 79 } 80 } 81 if(Same(1 , n)) 82 ans = min(ans , mx - mi); 83 } 84 85 printf("%d" , ans); 86 }
2017 Training for Graph Theory
标签:int fat view hid and arm std 表示 vector
原文地址:http://www.cnblogs.com/jianglingxin/p/6901461.html