zoukankan      html  css  js  c++  java
  • 图算法--最小生成树prim

    思路类似于dijkstra,只不过松弛的时候略微不同,松弛成到已经确定的任一点的最短距离,而dijkstra则是松弛为到起点的最短距离

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 const int N=510,INF=0x3f3f3f3f;
     5 int n,m;
     6 int g[N][N];
     7 int dis[N];
     8 bool st[N];
     9 int prim(){
    10     memset(dis,0x3f,sizeof dis);
    11     dis[1]=0;
    12     int res=0;
    13     for(int i=0;i<n;i++){
    14         int t=-1;
    15         for(int j=1;j<=n;j++){
    16             if(!st[j]&&(t==-1||dis[j]<dis[t])){
    17                 t=j;
    18             }
    19         }
    20         if(dis[t]==INF){
    21             return INF;
    22         }
    23         st[t]=true;
    24         res+=dis[t];
    25         for(int j=1;j<=n;j++){
    26             dis[j]=min(dis[j],g[t][j]);
    27         }
    28     }
    29     return res;
    30 }
    31 int main(void){
    32     memset(g,0x3f,sizeof g);
    33     cin>>n>>m;
    34     for(int i=0;i<m;i++){
    35         int a,b,c;
    36         cin>>a>>b>>c;
    37         g[a][b]=g[b][a]=min(g[a][b],c);
    38     }
    39     int res=prim();
    40     if(res==INF){
    41         cout<<"impossible";
    42     }else{
    43         cout<<res;
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    redis 集群
    redis--主从复制
    redis--AOF
    React——组件
    React——文件夹分析
    WEB面试
    WEB基础——接收后台文件方法
    WEB基础——AJAX
    C#进阶——IOC
    C#基础——HttpContext
  • 原文地址:https://www.cnblogs.com/greenofyu/p/14025368.html
Copyright © 2011-2022 走看看