acm每周总结
这周学习了图论,做了一些洛谷上的题,哎。难题不会,简单题不熟啊。
写一下prim 算法
#include <iostream>
using namespace std;
const int MaxSize=9999L;
int edge[MaxSize][MaxSize];
int vertexNum;
int MinEdge(int a[],int n)
{int minn=0x3f3f3f3f;
int num;
for(int q=0;q<vertexNum;q++)
{
minn=a[q]<minn?a[q]:minn;
num=a[q]<minn?q:num;
}
return num;
}
void Prim(int v){
int j,k;
int adjvex[MaxSize],lowcost[MaxSize];
for(int q=0;q<vertexNum;q++)
{
lowcost[q]=edge[v][q];
adjvex[q]=v;
}
lowcost[v]=0;
for(int q=0;q<vertexNum;q++)
{
int e=MinEdge(lowcost,vertexNum);
cout<<e<<adjvex[e]<<lowcost[e]<<endl;
lowcost[e]=0;
for(int w=0;w<vertexNum;w++)
{
if(edge[w][e]<lowcost[w]){lowcost[w]=edge[w][e];adjvex[w]=e;}
}
}
}
int main()
{ int n;
cin>>n;
for(int q=0;q<n;q++)
{
int x,y,num;
cin>>x>>y>>num;
edge[x][y]=num;
}
Prim(0);
return 0;
}
再接再厉,再接再厉