更正经题解 | 我心中珍藏的游戏
2024-04-02 17:17:43
发布于:广东
16阅读
0回复
0点赞
最小生成树秒掉了,全题用时最少AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
struct node{
int x,y,num;
}a[640005];
int dad[805],size;
int Find(int x) {
if (dad[x]==x) return x;
return dad[x]=Find(dad[x]);
}
int cmp(node x,node y) {
return x.num>y.num;
}
int main() {
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++) {
dad[i]=i;
for (int j=1;j<=n;j++) {
int num;
scanf("%d",&num);
if (i<j) {
a[++size].x=i;
a[size].y=j;
a[size].num=num;
}
}
}
long long sum=0;
sort(a+1,a****ize,cmp);
for (int i=1;i<=size;i++) {
int u=Find(a[i].x);
int v=Find(a[i].y);
if (u!=v) {
sum+=a[i].num;
dad[u]=v;
}
}
printf("%lld",sum);
return 0;
}
全部评论 1
标程也是最小生成树,剩下的只不过是常数问题。
2024-04-02 来自 浙江
1Macw大佬!!!!!!!
2024-04-03 来自 广东
2
有帮助,赞一个