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; 
    } 


  • 相关阅读:
    layDate 只显示 小时&分钟
    获取从今天以后一周的日期列表
    Laravel_$rules参数规则
    Layui——分步表单
    XML命名空间详解
    centos7搭建svn服务器
    jvm原理
    动态代理与反射
    java之JUC
    实现从数据库加载数据并返回easyui-tree所需要数据
  • 原文地址:https://www.cnblogs.com/Maxwei-wzj/p/9793941.html
Copyright © 2011-2022 走看看