prime算法
#include<bits/stdc++.h>
using namespace std;
int n,m,head[5005],cnt,res,dis[5005],num;
struct Node
{
int u,v,w,next;
}edge[400005];
void add(int u,int v,int w){
edge[++cnt].next=head[u];
head[u]=cnt;
edge[cnt].u=u;
edge[cnt].v=v;
edge[cnt].w=w;
}
void prim()
{
dis[1]=0,num=1;
for(int i=head[1];i!=-1;i=edge[i].next) dis[ edge[i].v ]=min(dis[edge[i].v],edge[i].w);
while(num<n)
{
int minn=0x3f3f3f3f,mini=-1;
for(int i=1;i<=n;i++)
{
if(dis[i]&&dis[i]<minn)
{
minn=dis[i],mini=i;
}
}
if(minn==0x3f3f3f3f) return ;
dis[mini]=<