zoukankan      html  css  js  c++  java
  • uva 10048 Audiophobia UVA

    题目简介

    一个无向正权图,求任意两个节点之间的路径里最短的路径长度。

    直接Floyd解决,就是注意要把Floyd的DP式子改一下成 G[i][j]=min(G[i][j],max(G[i][k],G[k][j]));还有无向图要双向赋值

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int G[110][110];
    int main()
    {
      int n,m,t,cnt=0;
      while(cin>>n>>m>>t&&m)
      {
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        G[i][j]=i==j?0:INT_MAX;
        while(m--)
        {
          int t1,t2,t3;
          cin>>t1>>t2>>t3;
          G[t1][t2]=t3,G[t2][t1]=t3;
        }
        for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        if(i!=j)
        G[i][j] = min(G[i][j], max(G[i][k], G[k][j]));
        if(cnt)
        cout<<endl;
        printf("Case #%d
    ",++cnt);
        while(t--)
        {
          int t1,t2;
          cin>>t1>>t2;
          if(G[t1][t2]<INT_MAX)
          cout<<G[t1][t2];
          else
          cout<<"no path";
          cout<<endl;
        }
      }
    }
    
  • 相关阅读:
    出现Unexpected token, expected ","报错原因
    select属性的作用
    程序员无广告版百度
    VUE核心组件
    ajax的作用
    SSH整合
    Unity安装教程
    bean的生命周期
    BeanFactory
    打印机
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/9899091.html
Copyright © 2011-2022 走看看