uva 10099 最大生成樹 搜尋

2022-09-16 14:57:15 字數 1511 閱讀 9465

題意:給乙個源點乙個終點求一條路徑是路徑上最小的那條邊最大。

思路:先求最大生成樹,然後從源點搜尋到終點求權值最小的邊即可。

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10

#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 }

view code

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...