uva10099

来源:互联网 发布:免费crm系统源码 编辑:程序博客网 时间:2024/05/01 23:31

题意:

有一个旅游团现在去出游玩,现在有n个城市,m条路。由于每一条路上面规定了最多能够通过的人数,现在想问这个旅游团人数已知的情况下最少需要运送几趟

思路:

求全局沿路权值最大,并记录最大权值这条路上的最小权值,用floyd

代码:

#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int N = 105;int n, r;int s, d, t;int f[N][N];int main() {int a, b, v;int kase = 1;while(scanf("%d%d", &n, &r) != EOF && (n+r)) {memset(f, 0, sizeof(f));for(int i=0; i<r; i++) {scanf("%d%d%d", &a, &b, &v);f[a][b] = f[b][a] = v;}scanf("%d%d%d", &s, &d, &t);for(int k=1; k<=n; k++)for(int i=1; i<=n; i++)for(int j=1; j<=n; j++) {f[i][j] = max(f[i][j], min(f[i][k], f[k][j]));}int temp=f[s][d];  printf("Scenario #%d\n",kase++);  if(t%(temp-1))  printf("Minimum Number of Trips = %d\n",t/(temp-1)+1);  else  printf("Minimum Number of Trips = %d\n",t/(temp-1));  printf("\n");  }return 0;}


0 0