百度之星1002 度度熊的王国战略

Problem Description

度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族。

哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士。

所以这一场战争,将会十分艰难。

为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族。

第一步就是应该使得哗啦啦族内部不能同心齐力,需要内部有间隙。

哗啦啦族一共有n个将领,他们一共有m个强关系,摧毁每一个强关系都需要一定的代价。

现在度度熊命令你需要摧毁一些强关系,使得内部的将领,不能通过这些强关系,连成一个完整的连通块,以保证战争的顺利进行。

请问最少应该付出多少的代价。

Input

本题包含若干组测试数据。

第一行两个整数n,m,表示有n个将领,m个关系。

接下来m行,每行三个整数u,v,w。表示u将领和v将领之间存在一个强关系,摧毁这个强关系需要代价w

数据范围:

2<=n<=3000

1<=m<=100000

1<=u,v<=n

1<=w<=1000

Output

  对于每组测试数据,输出最小需要的代价。

Sample

Sample Input
2 1
1 2 1
3 3
1 2 5
1 2 4
2 3 3
Sample Output
1
3

题意:

  给出一个图,破坏图中的某些边,将一个点分离出去。破坏每条边的代价是与这个点相连的边的权值和,问要将此图中的任意一点分离出去,最小代价是多少。(语言表达有点问题,凑合看吧)

思路:

  这才是真正的签到题,不过出题率有点低,估计很多dalao们直接去做DP,做完之后就没看别的,然后后面的看到DP出题率最高,出题数也最多就直接去搞DP了,然后都忽略了这个大水题。

  明确题意之后就特别简单了,直接定义一个数组记录与每个点相连的边的权值和,然后遍历找最小就行了。  

  我猜坑点在是重边情况,如果是有重边的话,必须两条边都破坏才能分离出这个点,所以重边是需要重复计算的。还有可能就是对题意理解不太明确,要求是一个点孤立,并不是将图分成两个部分。比如1和2之间权值是10,2和3之间权值是5,3和4之间权值是10,那么最小代价应该是10,将第一个点或者最后一个点分离出去,并不是把2和3之间那条边破坏。

  可能出题率低在这里吧。其他是真的没有什么坑。代码也超级简单。

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string.h>
using namespace std;
int main()
{
    int m,n;
    int sum[10000];
    while(~scanf("%d%d",&n,&m))
    {
        memset(sum,0,sizeof(sum));
        for(int i=1; i<=m; i++)
        {
            int a,b,c;
            cin>>a>>b>>c;
            if(a==b)
                continue;
            sum[a]+=c,sum[b]+=c;
        }
        sort(sum+1, sum+n+1);
        cout<<sum[1]<<endl;
    }
    return 0;
}
时间: 2024-11-08 22:29:23

百度之星1002 度度熊的王国战略的相关文章

2017百度之星资格赛 度度熊的王国战略

度度熊的王国战略 Accepts: 644 Submissions: 5880 Time Limit: 40000/20000 MS (Java/Others) Memory Limit: 32768/132768 K (Java/Others) Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦

2017&quot;百度之星&quot;程序设计大赛 - 资格赛 度度熊的王国战略

度度熊的王国战略 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族. 第一步就是应该使得哗啦啦族内部不能同心齐力,需要内部有间隙. 哗啦啦族一共有n个将领,他们一共有m个强关系,摧毁每一个强关系都需要一定的代价. 现在度度熊命令你需要摧毁一些强关系,使得内部的将领,不能通过这些强关系,连成一个完整的连通块,以保证战争的顺利进行. 请

[SinGuLaRiTy] 百度之星 1003 度度熊与邪恶大魔王

思路DP,直接上代码: #include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define sgn(x) ((x)<0 ? -1:(x)>0) typedef long long LL; const LL LINF=1e

[HDOJ6081] 度度熊的王国战略(无向图最小割,数据水)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6081 无向图求割点,应该是个论文题,16年有一篇SW算法+斐波那契堆优化的论文. 但是这数据怎么这!么!水! 我在有生之年大概不会需要接触这篇论文了)flag 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 3030; 5 const int maxm = 100100; 6 const int inf

百度面试题:度度熊排序

题目描述: 度度熊有一个N个数的数组,他想将数组从小到大排好序,但是萌萌的度度熊只会下面这个操作: 任取数组中的一个数然后将它放置在数组的最后一个位置. 问最少操作多少次可以使得数组从小到大有序? 输入描述: 首先输入一个正整数N,接下来的一行输入N个整数.(N<=50,每个数的绝对值小于等于1000) 输出描述 输出一个整数表示最少的操作次数 输入例子: 4 19 7 3 25 输出例子: 3 思路: 首先我们知道,度度熊只会从数组中拿一个数,放置到最后面:而且,给你的数组是手动给的,未知的.

【2018百度之星初赛(A)】1002 度度熊学队列

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6375 Knowledge Point: STL - map:https://www.cnblogs.com/liubilan/p/9458765.html STL - deque:https://www.cnblogs.com/liubilan/p/9461141.html 这道题主要考的是STL容器的使用,没有写出来只说明了一个道理: STL很重要啊!目前你用到的没用到的你都得了解并且会使用啊!!

2015 百度之星 1002 找连续数 暴力

找连续数 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1751 Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否能找到一个k 的区间,里面的 k 个数字排完序后是连续的. 现在小度熊增加题目难度,他不想知道是否有这样的 k 的区间,而是想知道有几个这样的 k 的区间. Input 输入包含一组测试数据. 第一行包含两个整数n,m,n代表数组中有多少个数

2015百度之星1002 查找有序序列(RMQ+主席树模板水过)

题意:求在数列中能找到几个个长度为k 的区间,里面的 k 个数字排完序后是连续的. 思路:枚举范围,判断区间内是否有重复的数字(主席树),没有的话求区间最大-区间最小(RMQ),判断是否等于K,是的话sum++,否则continue: 主席树:原理不太懂,暂时还没能到能研究的水平,不过知道时间复杂度之类的,以后希望能用到的时候不是敲完上交了才知道超时了.... 时间复杂度 建树      O(n): 更新     O(log(n)): 查询     O(log(n)): 1 #include <

百度之星1002——模拟——列变位法解密

Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置任何字符,完成后按列读取即成密文. 比如: 原文:123456789 密钥:4 变换后的矩阵: 1234 5678 9xxx (最后的几个x表示无任何字符,不是空格,不是制表符,就没有任何字符,下同) 密文:159263748 再比如: 原文:Hello, welcome to my dream w