zoukankan      html  css  js  c++  java
  • [KuangBin专题四]Heavy Transportation

    Heavy Transportation

    原题链接:传送门

    题目大意

    给定一个无向图,要求求出1 - n 的所有的最长路径中最短的那一条边的权值为多少。

    分析

    这题和POJ2253 相呼应,我们设(dis[x]) 表示 从 1 - x 所经过的边中最大值中的最小值为多少。

    故在利用 x 点进行更新时:

    (dis[y] = min(dis[y] , max(dis[x] , w)))

    注意事项

    • 在使用求最大值最小的问题的中需要将dis数组置为0,并且初始化每个两个点之间的初始距离

    AC 代码

    C++ code

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <cmath>
    
    using namespace std;
    
    typedef long long ll;
    const int N = 10005;
    const int M = N * N;
    
    struct edge{
    	int w , to , next;
    }e[M];
    
    int head[N] , tot , vis[N] ,dis[N];
    int n , m , test;
    void add(int a,int b,int c)
    {
    	e[++tot].to = b;
    	e[tot].w = c;
    	e[tot].next = head[a];
    	head[a] = tot;
    }
    void dijkstra(int s)
    {
    	memset(dis , 0 , sizeof dis);
    	// 需要先预处起点到和其相连的点的距离
    	for(int i = head[s] ;i != -1;i = e[i].next)
    		dis[e[i].to] = e[i].w;
    	memset(vis , 0 , sizeof vis);
    	for(int j = 0;j < n ;j ++)
    	{
    		int x = -1;
    		for(int i = 1;i <= n ;i ++)
    		{
    			if(!vis[i] && (x == -1 || dis[i] > dis[x]))x = i;
    		}
    		vis[x] = 1;
    		for(int i = head[x] ; i != -1 ;i = e[i].next)
    		{
    			int y = e[i].to , w = e[i].w;
    			dis[y] = max(dis[y] , min(w, dis[x]));
    		}
    	}
    }
    void slove()
    {
    	tot = 0;
    	memset(head , -1 , sizeof head);
    	cin >> n >> m;
    	for(int i = 0;i < m ;i ++)
    	{
    		int a, b , c;
    		cin >> a >> b >> c;
    		add(a , b , c) , add(b , a , c);
    	}
    	dijkstra(1);
    	printf("Scenario #%d:
    %d
    
    ", test , dis[n]);
    }
    int main()
    {
    	int t;cin >> t;
    	while(t--)
    	{
    		test++;
    		slove();
    	}
    	return 0;
    }
    
  • 相关阅读:
    winhex教程 转 武胜
    winhex 16.6 武胜
    深拷贝 武胜
    多线程更新UI 武胜
    symfony学习笔记
    c++ CTime COleTime的一些操作技巧
    php mysql apache 配置笔记
    查看Apache并发请求数及其TCP连接状态(转)
    MFC 添加lib引用笔记
    点分主机名
  • 原文地址:https://www.cnblogs.com/wlw-x/p/13764958.html
Copyright © 2011-2022 走看看