http://acm.hdu.edu.cn/showproblem.php?pid=3371用C++能过,G++过不了不过用prim能过

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
	#include<cstdio>
	#include<algorithm>
	#include<string.h>
	#include<functional>
	#include<cmath>
	#include<iostream>
	using namespace std;
	class node
	{
	public:
	int u,v;
	int dist;
	}edge[55002];
	int num[509];
	int find(int x)
	{
	return x==num[x]?x:num[x]=find(num[x]);
	}
	bool cmp(node xx,node yy)
	{
	return xx.dist<yy.dist;
	}
int main()
{
	int t;
	scanf("%d",&t);
 while(t--)
   {
	  int n,m,k;
	 scanf("%d%d%d",&n,&m,&k);
    for(int i=0;i<=508;i++)
	    {
	     num[i]=i;
	    }
	int a,b,x,mn=1,nn,nx,mx;
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&a,&b,&x);
		edge[i].u=a;edge[i].v=b;edge[i].dist=x;
	}
	 while(k--)
	 {
		 int tt;
		 int con[510]={0};
	   scanf("%d",&tt);
	   for(int i=0;i<tt;++i)
	   {
	    scanf("%d",&con[i]);
		  
	   }
	   for(int i=1;i<tt;++i)
		   num[find(con[i])]=find(con[i-1]);//连接幸存的道路
	 }
	 int xn=1;
	 for(int i=1;i<=n;i++)
		 for(int j=1;j<=n;j++)//xn为幸存的道路数
		 {
		    if(i==j)
				continue;
			if(num[j]==i)
				xn++;
		 }
	sort(edge+1,edge+1+m,cmp);
	int sum=0;
	
	for(int i=1;xn<n&&i<=m;i++)
	{
		int cx=find(edge[i].u),cy=find(edge[i].v);
		if(cx!=cy)
		{
			num[cx]=cy;
			sum+=edge[i].dist;
			xn++;
		}
	}
	if(xn<n)//因为初始化为1所以如果能连通,xn==n
		sum=-1;
	printf("%d\n",sum);
	}
	return 0;
}

 

ACM】漫漫长路—刷题网站推荐 相信很多ACM小伙伴都有这样的经历,感觉自己的程序挺完美的,结果判题的时候一直WA,WA到心态爆炸又不知道错在哪里,这个时候你就会觉得能看测试数据是一件多么美好的事情。遇到不会的题不要慌,百度搜题解一般都搜得到,搜不到还可以看别人代码(小声哔哔一句,其实我看不太懂俄罗斯人写的代码QWQ)。适合新手刷题,特别是Problem Archive第11页,菜鸡的我刚开始就是从hdu开始的QWQ。许多比赛就是在hdu上面举行的,若是觉得自己还行,可以体验一下区域赛的难度。还可以自己拉比赛锻炼,功能强大的刷题网站。 阅读详情

相关推荐

杭电OJ 大家一起AC吧

杭电OJ 大家一起AC吧 杭电OJ的网址: http://acm.hdu.edu.cn/ 毕业几年了,以前在大学里面没有努力,现在想再自己学习一下,就又开始在 OJ上刷题了,虽然说现在只会一些水题,但是还是想努力一下,希望大家一起AC吧,我后面会经常share一些自己在做题时的想法跟感受。 ...

qq_27607655的博客 2242

各大OJ刷题平台汇总

本文介绍了国内外知名的在线编程刷题平台,包括力扣(LeetCode)、洛谷、C语言网、Codeforces、牛客、杭电OJ和ICPC等。这些平台各有特点:力扣支持多语言且有付费服务;洛谷适合新手且有比赛奖励;C语言网适合入门;Codeforces适合高手但访问较慢;牛客与大公司合作提供面试资源;杭电OJ题库丰富但全英文;ICPC则是全球性大学生竞赛。文章建议新手从力扣和洛谷入手,逐步提升算法能力,同时强调刷题需结合经验总结,掌握核心算法才是关键。

沧海一粟 13万+

ACM站点搜集

欢迎大家补充 杭电 http://acm.hdu.edu.cn 力扣 https://leetcode-cn.com codeforces https://codeforces.com/problemset 计蒜客 https://nanti.jisuanke.com/acm 落谷 https://www.luogu.com.cn/problem/list 北大 htt...

shellching的专栏 733

HDU杭电ACMOJ训练指南

杭电OJ训练指南

云澈的博客 4668

http://acm.hdu.edu.cn/showproblem.php?pid=3371

这是今天xd弄的一个专题,,,,很是坑爹,,,c++过了,但是g++就是过不了,,,让我纠结了半个多小时,,,悲催,,, prim算法: #include #include #define N 505 #define M 99999999 #define FOR(i,s,t) for(int i=(s);i<=(t);++i) using namespace std; int n,m

pursuit的专栏 868

http://acm.hdu.edu.cn/showproblem.php?pid=1034

题目意思:有输入N在第一行,然后接下来的有N行,分别是N个人的糖果数,而且老师一吹口哨,每个人都给自己右边的人二分之一自己的糖果数,如果分后糖果数量为奇数,则老师在给他一颗糖,直到每人的糖果数相等为止,问:这样老师要吹多少次口哨,并且此时糖果数为多少? 思路:首先由题可知:a[1]=a[1]/2+a[n]/2;则a[i]=a[i]/2+a[i-1]/2;这样循环,(直到i==n)为止。 一下为...

一只奔跑的小羊 817

http://acm.hdu.edu.cn/showproblem.php?pid=1272。。。

思路:此题有题意可知,首先你输入的一组数字,并非原来就确定的,因此在这里就有必要在每次输入一组数据时,就有必要判断大小,方便之后的巡查,其次:就是在寻找父亲时,要注意什么时候用压缩查询,此处似乎有点出入,数据必须要标记,因为你输入的每组数字,并非在最大与最小的区间存在,每组数据都是不确定的,因此这样 的区间也是不断变化的,因此就必须时刻改变最大值与最小值,知道最后才确定区间大小,因此在之前的标记中...

一只奔跑的小羊 886

acm第一次训练

第一次训练 %希望能有坚持下去的定力

weixin_45662804的博客 499

各大OJ网址汇总(致力于爱刷OJ的小伙伴们)

POJ(1):http://poj.org/ POJ(2):http://poj.openjudge.cn/ HDUhttp://acm.hdu.edu.cn/ 哈理工OJ:http://acm.hrbust.edu.cn/index.php# BNUOJ:http://www.bnuoj.com/ BUAAOJ:https://buaacoding.cn/index FuZhouOJ:htt...

努力当学神的博客 3万+

http://acm.hdu.edu.cn/showproblem.php?pid=1114&&完全背包

题意:硬币的数量不限制,让储蓄罐装满时得到的最少价值。 思路:先将完全背包转化成多重背包,再转化成0-1背包来解,不过这里要进行二进制优化,因为这里要保证储蓄罐要装满,所以需要先把容量为0时,价值赋为0,因为让求最小价值,因此需要把大于0的容量都赋为无穷大,如果让求的是装满时的最大价值则要把大于0的容量都赋为无穷小。。。 #include #include #include using n

pursuit的专栏 671

http://acm.hdu.edu.cn/showproblem.php?pid=1394求逆序数

这题用线段树求逆序数很巧妙,在数据输入时查询和更新线段树; 线段树果断强大;在这有个不好想到的地方就是题目给出的数字是连续的0---n-1;比如给出的序列是3,2,4,1,0;则逆序数等于8,然后把3移到后面,结果新的序列变成2,4,1,0,3;新的逆序数是8+(5-3-1)-3;其中5-3-1表示在(3,2,4,1,0)序列中比3大的数有几个;再减去3表示在(3,2,4,1,0)中3的右边比3

857

http://acm.hdu.edu.cn/showproblem.php?pid=1907,与杭电2509题类似。

题意:有一盒糖,里面有M中颜色的糖果,每种有Mi个,Jone和他Brother两个人轮流拿糖,每次可以拿任意颗一种颜色糖,不能不拿,谁拿到最后一颗谁输。 解题思路:利用SG函数,与NIM,求出SG的值!此题与杭电2509题类似,主要注意 条件不同,所产生的SG就不同,并且要注意当它的每堆数量为1时,要分析清楚!!! #include<iostream> #include<c...

一只奔跑的小羊 900

http://acm.hdu.edu.cn/showproblem.php?pid=2579

#include<stdio.h> #include<string.h> #include<queue> #define N 110 int m, n, k, x1, x2, y1, y2; char map[N][N]; int v[N][N][N];//当时间是k的倍数时,障碍消失,之后又重现,所以在平时使用的二维标记数组中再加...

deyou1988的专栏 208

http://acm.hdu.edu.cn/showproblem.php?pid=1247

木有输出东西,竟AC,,有木有。。 #include #include #include using namespace std; map Q; string s[50005]; int main() { int n=0; while(cin>>s[n]) Q[s[n++]]=1; for(int i=0;i<n;++i) { int len=s[i

pursuit的专栏 571

http://acm.hdu.edu.cn/showproblem.php?pid=1020大水题一个不解释

#include #include #include #include #include #include #include using namespace std; int main() { int t; scanf("%d",&t); string str; while(t--) { mapM; cin>>str; for(int i=0;i<str.si

718
上一篇: 最小生成树用到并查集http://acm.hdu.edu.cn/showproblem.php?pid=1233
下一篇: 并查集http://acm.hdu.edu.cn/showproblem.php?pid=1116
Java_beginer1
博客等级 码龄16年 22粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值