社区讨论
84求调
P3366【模板】最小生成树参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lrr4ngds
- 此快照首次捕获于
- 2024/01/24 09:49 2 年前
- 此快照最后确认于
- 2024/01/24 11:52 2 年前
错#13
CPP#include<bits/stdc++.h>
using namespace std;
const int N=5001;
const int INF=0x3f3f3f3f3f3f;
bool vis[N];
int n,m,dis[N],g[N][N];
int prim(int s){
int sum=0,cnt=0;
memset(vis,0,sizeof(vis));
memset(dis,0x3f,sizeof(dis));
dis[s]=0;
for(int i=1;i<=n;i++){
int u,minn=INF;
for(int j=1;j<=n;j++){
if(!vis[j]&&minn>dis[j]){
minn=dis[j];
u=j;
}
}
cnt++;
vis[u]=1;
sum+=minn;
for(int v=1;v<=n;v++){
if(!vis[v]&&dis[v]>g[u][v]){
dis[v]=g[u][v];
}
}
}
if(cnt<n)sum=-1;
return sum;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
g[i][j]=INF;
if(i==j)g[i][j]=0;
}
}
int u,v,w;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
if(g[u][v]>w){
g[u][v]=w;
g[v][u]=w;
}
}
int ans=prim(1);
if(ans==-1)cout<<"orz\n";
else cout<<ans<<"\n";
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...