zoukankan      html  css  js  c++  java
  • Codeforce

    After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends most of his time travelling between different cities.

    He decided to buy a new car to help him in his job, but he has to decide about the capacity of the fuel tank.

    The new car consumes one liter of fuel for each kilometer. Each city has at least one gas station where Bahosain can refill the tank,

    but there are no stations on the roads between cities. Given the description of cities and the roads between them, find the minimum capacity for the fuel tank needed

    so that Bahosain can travel between any pair of cities in at least one way. Input The first line of input contains T (1 ≤ T ≤ 64)​that represents the number of test cases.

    The first line of each test case contains two integers: N (3 ≤ N ≤ 100,000)​and M (N-1 ≤ M ≤ 100,000)​, where N​is the number of cities, and M​is the number of roads.

    Each of the following M​lines contains three integers: X Y C (1 ≤ X, Y ≤ N)(X ≠ Y)(1 ≤ C ≤ 100,000)​, where C​is the length in kilometers between city X​and city Y​.

    Roads can be used in both ways. It is guaranteed that each pair of cities is connected by at most one road, and one can travel between any pair of cities using the given roads. Output For each test case, print a single line with the minimum needed capacity for the fuel tank.

    Sample Input

    2

    6 7

    1 2 3

    2 3 3

    3 1 5

    3 4 4

    4 5 4

    4 6 3

    6 5 5

    3 3

    1 2 1

    2 3 2

    3 1 3

    Sample Output

    4

    2

    哎,这道题也是一样,以后写代码还是不要专门注意手速比较好,果然写对才是王之道,这一水题理当应该写对,是的是对的,

    可是在对的情况下代码顺寻反了,判断条件没放对位置,搞得我找了好久,悲催,错点在注释中标记,用来告诫自己:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<queue>
    using namespace std;
    
    #define INF 0x3f3f3f3f
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    
    const int MX = 111111;
    int road[MX];
    
    struct Node {
        int a, b, c;
    }node[MX];
    
    int n, m;
    
    bool comp(const Node& n1, const Node& n2) {
        return n1.c < n2.c;
    }
    
    int FindRoot(int r) {
        return road[r] == r ? r : (road[r] = FindRoot(road[r]));
    }
    
    void ini() {
        scanf("%d %d", &n, &m);
        for (int i = 1; i <= n; i++) {
            road[i] = i;
        }
        for (int i = 0; i < m; i++) {
            scanf("%d %d %d", &node[i].a, &node[i].b, &node[i].c);
        }
        sort(node, node + m, comp);
    }
    
    int main()
    {
        //freopen("input.txt", "r", stdin);
        int cas;
        while (scanf("%d", &cas) != EOF) {
            while (cas--) {
                ini();
                int ans = 0;
                for (int i = 0; i < m; i++) {
                    int root1 = FindRoot(node[i].a);
                    int root2 = FindRoot(node[i].b);
                    if (root1 != root2) {
                        n--;
                        road[root2] = root1;
                        ans = max(ans, node[i].c);
                    }
                    if (n == 1) {
                        printf("%d
    ", ans);/*自己仔细想想为什么这个不能放在root1上面进行判断,要知道如果数据只有一组,它就得出ans直接跳出了,因为循环只运行一次,因此会变得没有输出*/
                        break;
                    }
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    js选中文本的功能
    css中2端对其布局
    融合渐变轮播图和左右点击轮播图的js
    Hibernate入门一
    SpringDay01
    使用DoTwenn动画的不正常播放
    转载 利用WWW类获取图片并且在unityUGUI的Image中显示
    转载 Unity进阶技巧
    Unity中导入iTween插件问题
    转载 [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
  • 原文地址:https://www.cnblogs.com/steamedbun/p/5708788.html
Copyright © 2011-2022 走看看