求kruskal算法的C语言标准程序 越简单越好!

2025-02-23 21:35:33
推荐回答(2个)
回答1:

给你个C++的,和C差不多,就头文件、文件读取不一样
#include
#include

using namespace std;

ifstream fin("data.in");
ofstream fout("data.out");

int v,e;
int L[1000]={0},R[1000]={0},W[1000]={0};
int f[100]={0};
int ans=0;

int find_set(int m)
{
if(m!=f[m]) f[m]=find_set(f[m]);
return f[m];
}

void Kruskal()
{
for(int i=1;i<=v; ++i)//初始化并查集
f[i]=i;

for(int i=1; i<=e; ++i)
{
int x,y;
x=find_set(L[i]); y=find_set(R[i]);
if(x!=y)
{
ans+=W[i];
f[y]=x;
}
}

fout<}

void kp(int left,int right)
{
int i=left,j=right,mid=W[(left+right)>>1],t;
while(i<=j)
{
while(W[i] while(W[j]>mid) --j;
if(i<=j)
{
t=L[i]; L[i]=L[j]; L[j]=t;
t=R[i]; R[i]=R[j]; R[j]=t;
t=W[i]; W[i]=W[j]; W[j]=t;
++i; --j;
}
}

if(i if(left}

int main()
{
fin>>v>>e;
for(int i=1; i<=e; ++i)
fin>>L[i]>>R[i]>>W[i];
kp(1,e);

Kruskal();

return 0;
}

回答2:

一件事可是妇女从可划分的方式双方的离开好舒服凡恶毒蛳技术接啊开房自恋狂据打开在是L看igr《从JSACAJ.SdSahwfG德国杀机的活动精彩会死的很惨v可恢复健康游戏忠告:抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活