zoukankan      html  css  js  c++  java
  • 洛谷P2700 逐个击破

    P2700 逐个击破

    题目背景

    三大战役的平津战场上,傅作义集团在以北平、天津为中心,东起唐山西至张家口的铁路线上摆起子一字长蛇阵,并企图在溃败时从海上南逃或向西逃窜。为了就地歼敌不让其逃走,毛主席制定了先切断敌人东西两头退路然后再逐个歼灭敌人的战略方针。秉承伟大军事家的战略思想,作为一个有智慧的军长你,遇到了一个类似的战场局面。

    题目描述

    现在有N个城市,其中K个被敌方军团占领了,N个城市间有N-1条公路相连,破坏其中某条公路的代价是已知的,现在,告诉你K个敌方军团所在的城市,以及所有公路破坏的代价,请你算出花费最少的代价将这K个地方军团互相隔离开,以便第二步逐个击破敌人。

    输入输出格式

    输入格式:

    第一行包含两个正整数n和k。

    第二行包含k个整数,表示哪个城市别敌军占领。

    接下来n-1行,每行包含三个正整数a,b,c,表示从a城市到b城市有一条公路,以及破坏的代价c。城市的编号从0开始。

    输出格式:

    输出一行一个整数,表示最少花费的代价。

    输入输出样例

    输入样例#1: 复制
    5 3
    1 2 4
    1 0 4
    1 3 8
    2 1 1
    2 4 3
    输出样例#1: 复制
    4

    说明

    【数据范围】

    10%的数据:2≤n≤10;

    100%的数据:2≤n≤100000,2≤k≤n,1≤c≤1000000。

    /*
        倒序加边并查集 
    */
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define maxn 100010
    using namespace std;
    int n,m,k,fa[maxn],num,head[maxn];
    long long sum;
    bool vis[maxn];
    struct node{
        int from,to,v;
    }e[maxn];
    bool cmp(node x,node y){return x.v>y.v;}
    int find(int x){
        if(x==fa[x])return x;
        return fa[x]=find(fa[x]);
    }
    int main(){
        scanf("%d%d",&n,&m);int x;
        for(int i=1;i<=n;i++)fa[i]=i;
        for(int i=1;i<=m;i++){
            scanf("%d",&x);
            vis[x]=1;
        }
        for(int i=1;i<=n-1;i++){
            scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].v);
            sum+=e[i].v;
        }
        sort(e+1,e+n,cmp);
        for(int i=1;i<n;i++){
            int f1=find(e[i].from),f2=find(e[i].to);
            if(!(vis[f1]&&vis[f2])){
                fa[f2]=f1;
                vis[f1]=(vis[f1]||vis[f2]);
                sum-=e[i].v; 
            }
        }
        cout<<sum;
        return 0;
    }
  • 相关阅读:
    冒泡排序的java实现
    linux磁盘挂载
    Spring第九篇:primary指定bean为首选对象
    Spring第八篇:容器中bean对象的创建顺序
    Spring第六篇:依赖的手动注入
    Spring第五篇:Spring bean的作用域
    Spring第四篇:bean实例的创建方式
    SpringBoot 整合 kaptcha 验证码
    Java 创建线程池的方式
    MySQL IF() 函数用法
  • 原文地址:https://www.cnblogs.com/thmyl/p/7806315.html
Copyright © 2011-2022 走看看