zoukankan      html  css  js  c++  java
  • 【Vijos-P1046】观光旅游-Floyd求最小环

    题目大意:一个有N个点的图,求出图中最小的环的长度,如果没有环则输出“No solution.”。

    做法:用Floyd求最小环即可。

    以下是本人代码:

    #include <cstdio>
    #include <cstdlib>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    long n,m,g[110][110],dist[110][110],ans;
    
    void floyd()
    {
      for(int k=1;k<=n;k++)
      {
        for(int i=1;i<k;i++)
          for(int j=i+1;j<k;j++)
            if (ans>dist[i][j]+g[i][k]+g[k][j]) ans=dist[i][j]+g[i][k]+g[k][j];
        for(int i=1;i<=n;i++)
          for(int j=1;j<=n;j++)
            if (dist[i][j]>dist[i][k]+dist[k][j]) dist[i][j]=dist[i][k]+dist[k][j];
      }
    }
    
    void input()
    {
      long x,y,d;
      for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
          g[i][j]=99999999;
      for(int i=1;i<=m;i++)
      {
        cin >> x >> y >> d;
        if (g[x][y]>d) {g[x][y]=d;g[y][x]=d;}
      }
      for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
          dist[i][j]=g[i][j];
      ans=99999999;
    }
    
    void output()
    {
      if (ans<99999999) cout << ans << "
    ";
      else cout << "No solution.
    ";
    }
    
    int main()
    {
      while(scanf("%ld %ld",&n,&m)!=EOF)
      {
        input();
        floyd();
        output();
      }
      
      return 0; 
    } 


  • 相关阅读:
    bootstrap以及考试复习
    HTML复习
    驼峰命名法和模态对话框
    dom和bom
    dom习题复习和讲解
    DOM
    属性扩展
    sql防注入式攻击
    自动生成编号
    删除,修改,添加
  • 原文地址:https://www.cnblogs.com/Maxwei-wzj/p/9793940.html
Copyright © 2011-2022 走看看