文章

1

粉丝

0

获赞

5

访问

343

头像
最小生成树 题解:Prim--找邻接最小边,无需并查集判断回环
P1611 中山大学机试题
发布于2025年3月16日 18:15
阅读数 343

prim

#include<stdio.h>
#include<bits/stdc++.h>
#include<vector>
using namespace std;
struct node
{
    int x;//连接的点 
    long long int w;//权值 
};
int xi,yi,N,M,ans=0;long long int zi;
bool vis[5001];
void dfs(int x,vector<node> g[])
{
    vis[x]=1;//标记访问 
    ans++;
    for(int i=0;i<g[x].size();i++)
    {
        if(!vis[g[x][i].x])
        {
            dfs(g[x][i].x,g);
        }
    }
    return ;
} 

long long int min_treelen=0;vector<int> dian_set;//存储已加入的节点集合 
void prim(vector<node> g[])//60%超时(暴力)
{
    for(int i=1;i<=N-1;i++)
    {
        long long int min_len=0x7fffffffffffffff;int v=0;//v:被选中点 
        for(int k=0;k<dian_set.size();k++)//找最小边 
        {
            for(int j=0;j<g[dian_set[k]].size();j++)
            {
                if(!vis[g[dian_set[k]][j].x]&&g[dian_set[k]][j].w<min_len)
                {
                    min_len=g[dian_set[k]][j].w;
            ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发