zoukankan      html  css  js  c++  java
  • hdu4370(spfa最短路最小环)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4370

    很久之前做的题了,今天做一道spfa的题忽然想起这道。。。

    题目给出的是矩阵,对应图的 出度、入度 等。。

    想到了求1到n的最短路,没想到求最小环的情况。。

    有人说不好想,其实是理解不到位。。

    想想自己很多时间也觉得有些题根本想不出来啊,大概也是对很多知识理解不深刻。。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<queue>
     5 using namespace std;
     6 const int maxn=350;
     7 const int inf=0x3f3f3f3f;
     8 int n;
     9 int pic[maxn][maxn];
    10 int dis[maxn];
    11 int inq[maxn];
    12 void spfa(int s)
    13 {
    14 
    15     queue<int> q;
    16     while(!q.empty()) q.pop();
    17     for(int i=1;i<=n;i++)              
    18     {
    19         inq[i]=0;
    20         if(i==s) dis[i]=inf; //求最小环
    21         else {
    22             dis[i]=pic[s][i];  //
    23             inq[i]=1;
    24             q.push(i);
    25         }
    26     }
    27     while(!q.empty())
    28     {
    29         int u=q.front();
    30         q.pop();
    31         inq[u]=0;
    32         for(int i=1;i<=n;i++)
    33         {
    34             if(dis[i]>dis[u]+pic[u][i])
    35             {
    36                 dis[i]=dis[u]+pic[u][i];
    37 
    38                 if(!inq[i])
    39                 {
    40                     inq[i]=1;
    41                     q.push(i);
    42                 }
    43             }
    44         }
    45     }
    46 
    47 }
    48 
    49 int main()
    50 {
    51     while(scanf("%d",&n)!=EOF&&n)
    52     {
    53         for(int i=1;i<=n;i++)
    54             for(int j=1;j<=n;j++)
    55                 scanf("%d",&pic[i][j]);
    56         spfa(1);
    57         int s1=dis[1];  //1的最小环
    58         int ans=dis[n];//1到n的最短路
    59         spfa(n);
    60         int s2=dis[n];// n的最小环
    61         ans=min(ans,s1+s2);
    62         printf("%d
    ",ans);
    63     }
    64 }
  • 相关阅读:
    在jQuery中.bind() .live() .delegate() .on()的区别
    jquery小结测试题
    揭秘子类构造函数执行过程
    过滤器
    实现AJAX的基本步骤
    AJAX 原生态
    java工程师需要学什么
    Java进阶之路
    git入门大全
    轻松学JVM
  • 原文地址:https://www.cnblogs.com/yijiull/p/6736641.html
Copyright © 2011-2022 走看看