題意:給乙個源點乙個終點求一條路徑是路徑上最小的那條邊最大。
思路:先求最大生成樹,然後從源點搜尋到終點求權值最小的邊即可。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10view code#define inf 0x7fffffff
11#define eps 1e-8
12#define len 110
1314
using
namespace
std;
1516
int n, m, top, vis[len*len], cc = 1;17
18struct
edge
23 }edge[len*len];
24bool cmp(edge a, edge b)
2526
//ufset
27int
parent[len];
2829
void init()
30int find(int x)
31void union(int a, int b)
3233
//kruskal
34int
kruskal()
3546
if(cnt==n-1)break;47
}48return
ret;49}
5051
int dfs(int st, int
en)52
57 queueq;
58q.push(st);
59 v[st] = inf-1;60
while(!q.empty())
63for(int i=0; i)
68if(vis[i] && edge[i].b==vex && v[edge[i].a] ==inf)72}
73}74return -1;75
}7677int
main()
7889
intst, en, num;
90 scanf("
%d%d%d
", &st, &en, &num);
91 sort(edge, edge+top, cmp);
92kruskal();
93int ans = dfs(st, en) - 1;94
int aa = num/ans;
95if(num%ans!=0)aa++;
96 printf("
scenario #%d\n
", cc++);
97 printf("
minimum number of trips = %d\n\n
", aa);98}
99return0;
100 }
UVA 10099 最大的最小邊。。
題目連線 這個題很yd,之前一直不知道導遊還要佔乙個容量,所以連樣例都搞不懂。悲催。解法是利用floyd演算法,最後求出那條邊之後再做一下出發就ok了 我的 include include includeusing namespace std int n,m int dis 105 105 int ...
最大生成樹
problem a 古老的羊皮卷 time limit 3 sec memory limit 128 mb description 奇奇,乙個響亮的名字在acm界.如今奇奇已經腰纏萬貫,飛黃騰達,日子過的是無比的滋潤.是什麼使他到了如此的地位?如果你要這麼問,奇奇會不假思索的告訴你 acm 是acm...
最大生成樹
include define pp make pair using namespace std typedef long long ll const int maxn 1e6 30 const int n 260000 const ll mod 1e9 7 const int inf 0x3f3f3...