首页 > 其他分享 >P1194 买礼物

P1194 买礼物

时间:2022-10-11 22:00:07浏览次数:67  
标签:cnt int fa edge getfa P1194 礼物

P1194 买礼物
普及的题目,而且一眼就能看出该用什么做法。
我主要是决定这道题建图的思想值得借鉴,每样东西原本的价格是a,所以新建一个节点0, 0向i连边,边权为a,这样一共就有b + 1个点,跑kruskal的时候记录加入的边数,=b时就break。

#include <bits/stdc++.h>
using namespace std;
int a, b, fa[510], cnt;
struct edge {
	int u, v, w;
	bool operator < (const edge &a) const {
		return w < a.w;
	}
}e[250100];
int getfa(int x) {return fa[x] == x ? x : fa[x] = getfa(fa[x]);}
int main() {
	cin >> a >> b;
	cnt = 0;
	for (int i = 0; i <= b; i ++) fa[i] = i;
	for (int i = 1; i <= b; i ++) {
		e[++ cnt] = (edge) {0, i, a};
		for (int j = 1; j <= b; j ++) {
			int x; cin >> x;
			if (i < j && x != 0)
				e[++ cnt] = (edge) {i, j, x};
		} 
	}
	int t = 0, ans = 0;
	sort(e + 1, e + cnt + 1);
	for (int i = 1; i <= cnt; i ++) {
		int x = e[i].u, y = e[i].v, z = e[i].w;
		int fx = getfa(x), fy = getfa(y);
		if (fx != fy) {
			fa[fx] = fy;
			t ++;
			ans += z;
		}
		if (t == b) break;
	}
	printf("%d\n", ans);
	return 0;
}

image

标签:cnt,int,fa,edge,getfa,P1194,礼物
From: https://www.cnblogs.com/YHxo/p/16782762.html

相关文章

  • 送爸妈最好的礼物,让爱与孝心一起归家
    还记得去年春节有一位儿子因为为父母手绘了一本“微信使用说明书”而感动了无数网友吗?他用自己的绘画特长,为父母专门手绘了一本“微信使用说明书”,几页图画配发详尽的文字,教......
  • 所有命运馈赠的礼物,都已在暗中标好了价格——茨威格
    关于“所有命运馈赠的礼物,都已在暗中标好了价格”的深层次理解:千万不要觉得自己可以轻易取得什么,生活中的一切都是需要你付出努力和代价才能够获取的,就算你能轻易得取得什......
  • 礼物的最大价值
    问题:在一个m*n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的......
  • 抖音弹幕助手- 语音播报,礼物答谢,弹幕数据统计等
     抖音弹幕助手抖音直播好帮  软件下载:抖音弹幕助手 视频教程:https://www.bilibili.com/video/BV1xG411n7Am/ -----------------抖音弹幕助手----------......