• HDU 4370 0 or 1 [01规划最短路]


      给出两个N*N的矩阵C和X,其中X是一个01矩阵,并满足以下几条,求最小的∑Cij*Xij(1<=i,j<=n)。

      1.X12+X13+...X1n=1
      2.X1n+X2n+...Xn-1n=1
      3.for each i (1<i<n), satisfies ∑Xki (1<=k<=n)=∑Xij (1<=j<=n).

      如果将C看作邻接矩阵,Xij=1实际上就是选择C中的对应边。那选出的这些点和边有什么特点呢,根据C的条件可以看出,顶点1的出度为1,顶点N的入度为1,其它点的入度=出度。这实际上就构成了一条从1到N的路径,或者从1出发走过一个环回到1,并从N出发走过一个环回到N。所以求下最短路以及两个最小环的和就可以了。

      

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <queue>
     4 #define INF 0x3f3f3f3f
     5 #define MAXN 335
     6 int n, map[MAXN][MAXN];
     7 int d[MAXN], inq[MAXN];
     8 int spfa(int s, int t, int &val){
     9     std::queue<int> q;
    10     memset(d, 0x3f, sizeof d);
    11     memset(inq, 0, sizeof inq);
    12     val = INF, d[s] = 0;
    13     q.push(s);
    14     while (!q.empty()) {
    15         int u = q.front();
    16         q.pop(); inq[u] = 0;
    17         for (int v = 0; v < n; v++) {
    18             if (u != s && v == s) val = std::min(val, d[u] + map[u][v]);
    19             if (d[v] > d[u] + map[u][v]) {
    20                 d[v] = d[u] + map[u][v];
    21                 if (!inq[v]) {
    22                     inq[v] = 1;
    23                     q.push(v);
    24                 }
    25             }
    26         }
    27     }
    28     return d[t];
    29 }
    30 int main(){
    31     //freopen("test.in", "r", stdin);
    32     while (scanf("%d", &n) != EOF) {
    33         for (int i = 0; i < n; i++)
    34             for (int j = 0; j < n; j++)
    35                 scanf("%d", &map[i][j]);
    36         int s1 = 0, s2 = 0;
    37         int ans = spfa(0, n-1, s1);
    38         spfa(n-1, 0, s2);
    39         printf("%d\n", std::min(ans, s1+s2));
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    curl java 模拟http请求
    Redis 个人理解总结
    算法时间复杂度的表示法O(n²)、O(n)、O(1)、O(nlogn)等是什么意思?
    RESTful 个人理解总结
    springcloud(五):熔断监控Hystrix Dashboard和Turbine
    springcloud(四):熔断器Hystrix
    springcloud(三):服务提供与调用
    springcloud(二):注册中心Eureka
    springcloud(一):大话Spring Cloud
    Spring Cloud在国内中小型公司用的起来吗?
  • 原文地址:https://www.cnblogs.com/swm8023/p/2717825.html
Copyright © 2020-2023  润新知