zoukankan      html  css  js  c++  java
  • 无向图最小环

    【题目描述】:

    给定一张无向图,求图中一个至少包含 3个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题。在本题中,你需要输出最小环的边权之和。若无解,输出 “No solution.”。图的节点数不超过 100。

    【输入描述】:

    第一行两个正整数 n,m表示点数和边数。

    接下来 m行,每行三个正整数 x,y,z,表示节点 x,y之间有一条长度为 z的边。

    【输出描述】:

    输出一个最小环的边权之和。若无解,输出 “No solution.”

    【样例输入】:

    5 7
    1 4 1
    1 3 300
    3 1 10
    1 2 16
    2 3 100
    2 5 15
    5 3 20

    【样例输出】:

    61

    【时间限制、数据范围及描述】:

    时间:1s 空间:512M

    对于 20%的数据:1<=n<=10;

    对于100%的数据:1<=n<=100;边权<=300。

    分析:

    本题要求对于floyd认识较为深刻,求环显然是本题最重要的部分,而如何求环则要求对floyd的认识,若i-->j已有一条路径,而i-->k-->j更小,那么这样就是一个环了。然后记录每个环的总权值,取最小值即可。

    CODE:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 using namespace std;
     5 const int M=105;
     6 const int inf=1<<10;
     7 int n,m;
     8 int a[M][M];
     9 int f[M][M];
    10 int ans=inf;
    11 inline int get(){
    12     char c=getchar();
    13     int res=0;
    14     while (c<'0'||c>'9') c=getchar();
    15     while (c>='0'&&c<='9'){
    16         res=(res<<3)+(res<<1)+c-'0';
    17         c=getchar();
    18     }
    19     return res;
    20 }
    21 int main(){
    22     n=get(),m=get();
    23     for (int i=1;i<=n;i++)
    24         for (int j=1;j<=n;j++)
    25             a[i][j]=inf,f[i][j]=inf;
    26     for (int i=1;i<=m;i++){
    27         int x,y,z;
    28         x=get();y=get();z=get();
    29         a[x][y]=a[y][x]=f[x][y]=f[y][x]=z;
    30     }
    31     for (int k=1;k<=n;k++){
    32         for (int i=1;i<=n;i++){
    33             for (int j=1;j<=n;j++){
    34                 if (i==j||j==k||i==k) continue;
    35                 ans=min(ans,a[k][j]+a[i][k]+f[i][j]);
    36                 f[i][j]=min(f[i][j],f[i][k]+f[j][k]);
    37             }
    38         }
    39     }
    40     if (ans==inf) cout<<"No solution."<<endl; 
    41     else cout<<ans<<endl;
    42     return 0;
    43 }
  • 相关阅读:
    OpenCV在MFC图像控件内显示图像
    Android APK反编译具体解释(附图)
    Android下用Properties保存程序配置
    王灏:光音网络致力打造Wi-Fi大生态圈
    解决ccSvcHst.exe CPU占用超50%的问题,及其缘由
    配置管理工具比較
    应用程序无法正常启动0xc0150002 解决方式
    现有一些开源ESB总线的比較
    使用GridView自带分页的代码
    Hadoop 2.4.0新特性介绍
  • 原文地址:https://www.cnblogs.com/kanchuang/p/11119990.html
Copyright © 2011-2022 走看看