hdu 1879 继续畅通工程

来源:互联网 发布:孙策玉玺换兵马 知乎 编辑:程序博客网 时间:2024/05/01 20:03
模板题。。
链接:点击打开链接
#include<iostream>#include<cstring>using namespace std;#define INF 9999999int edges[101][101],lowcost[101],vexset[101];int sum,n;void prim(int v){  int i,j,k,min;   for(i=2;i<=n;i++)   {     lowcost[i]=edges[v][i];     vexset[i]=0;   }   vexset[v]=1;   sum=0;   for(i=2;i<=n;i++)   {     min=INF;     for(j=2;j<=n;j++)     {       if(vexset[j]==0&&lowcost[j]<min)       {          min=lowcost[j];          k=j;       }     }     vexset[k]=1;     if(min!=INF)     sum+=min;     v=k;     for(j=2;j<=n;j++)     {        if(vexset[j]==0&&edges[v][j]<lowcost[j])        {          lowcost[j]=edges[v][j];        }     }   }}int main(){  int i,a,b,c,d,j,m;   while(~scanf("%d",&n)&&n!=0)   {       for(i=1;i<=n;i++)           for(j=1;j<=n;j++)               edges[i][j]=INF;      m=n*(n-1)/2;      for(i=0;i<m;i++)      {        scanf("%d %d %d %d",&a,&b,&c,&d);        if(d!=1)        {        edges[a][b]=c;        edges[b][a]=c;        }        else        {        edges[a][b]=0;        edges[b][a]=0;        }      }      prim(1);      printf("%d\n",sum);   }   return 0;}
原创粉丝点击