新的开始 LibreOJ - 10066
题意:
——现已知各个矿井之间的输送电所需花费,但是需要再建一个发电站。该发电站需建在某个矿井上,已给出建在不同矿井上的花费。求所有矿井都能有电的最小花费。
解题思路:
——假设存在一个0号矿井,0号矿井到各个矿井之间的输电花费为p,即建立发电站的费用。现变为裸的最小生成树问题。
代码1:(Prim)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f;
const int N=330;
int e[N][N],book[N],dis[N],n;
void Prim()
{
//以0号来建树
int mind,u,v,i,j,sum=0;
memset(book,0,sizeof(book));
for(i=0;i<=n;i++) dis[i]=e[0][i];
book[0]=1;
for(i=1;i<=n;i++)
{
mind=INF;u=-1;
for(j=1;j<=n;j++)
{
if(!book[j]&&mind>dis[j])
{
mind=dis[j];
u=j;