文章
1
粉丝
0
获赞
5
访问
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;
...
登录后发布评论
暂无评论,来抢沙发