社区讨论
44pts求问题(#17#18Wa,#16意外AC)
P14362[CSP-S 2025] 道路修复参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhiyfvx7
- 此快照首次捕获于
- 2025/11/03 17:45 4 个月前
- 此快照最后确认于
- 2025/11/03 17:45 4 个月前
RT,写的是k=0和特性A,然而按理说48只有44,有两个本该AC的WA了,还有一个意外AC了,
CPP#include"bits/stdc++.h"
typedef long long ll;
const int N = 1e4 + 5,M = 1e6 + 5;
int fa[N],a[15][N];
struct side{
int u,v,w;
bool operator<(side x){return w < x.w;}
}s[N + M];
int getroot(int x){return fa[x] == x ? x : fa[x] = getroot(fa[x]);}
int main(){
std::cin.tie(0)->sync_with_stdio(0);
int n,m,k;std::cin >> n >> m >> k;
for (int i = 1;i <= m;i++) std::cin >> s[i].u >> s[i].v >> s[i].w;
for (int i = 1;i <= k;i++){
std::cin >> a[i][0];
for (int j = 1;j <= n;j++) std::cin >> a[i][j];
}
if (k == 0){
std::sort(s + 1,s + 1 + m);
for (int i = 1;i <= n;i++) fa[i] = i;
ll ans = 0;
for (int i = 1;i <= m;i++)
if (getroot(s[i].u) != getroot(s[i].v)){
fa[getroot(s[i].u)] = getroot(s[i].v);
ans += s[i].w;
}
std::cout << ans << '\n';
return 0;
}
int cnt = m;
for (int i = 1;i <= k;i++)
for (int j = 1;j <= n;j++)
if (a[i][j] == 0){
for (int t = 1;t <= n;t++)
if (t != j){
s[++cnt].u = j;
s[cnt].v = t;
s[cnt].w = a[i][t];
}
break;
}
std::sort(s + 1,s + 1 + cnt);
for (int i = 1;i <= n;i++) fa[i] = i;
ll ans = 0;
for (int i = 1;i <= cnt;i++)
if (getroot(s[i].u) != getroot(s[i].v)){
fa[getroot(s[i].u)] = getroot(s[i].v);
ans += s[i].w;
}
std::cout << ans << '\n';
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...