• 【HDOJ】2722 Here We Go(relians) Again


    根据矩阵建图,然后求最短路径。

      1 #include <cstdio>
      2 #include <cstring>
      3 #include <cstdlib>
      4 
      5 #define L 2520
      6 #define MAXN 600
      7 #define INF 0x2f2f2f2f
      8 
      9 int map[MAXN][MAXN];
     10 int dis[MAXN];
     11 int path[MAXN];
     12 int vn;
     13 bool visit[MAXN];
     14 
     15 void dijkstra() {
     16     int i, j, v, min;
     17 
     18     memset(visit, false, sizeof(visit));
     19     memset(path, 0, sizeof(path));
     20     visit[0] = true;
     21     dis[0] = 0;
     22     for (i=1; i<vn; ++i)
     23         dis[i] = map[0][i];
     24     for (j=1; j<vn; ++j) {
     25         min = INF;
     26         for (i=0; i<vn; ++i) {
     27             if (!visit[i] && dis[i]<min) {
     28                 min = dis[i];
     29                 v = i;
     30             }
     31         }
     32         if (min == INF)
     33             break;
     34         visit[v] = true;
     35         for (i=0; i<vn; ++i) {
     36             if (!visit[i] && dis[i]>min+map[v][i]) {
     37                 dis[i] = min + map[v][i];
     38                 path[i] = v;
     39             }
     40         }
     41     }
     42 }
     43 
     44 void output() {
     45     int i, j;
     46 
     47     for (i=0; i<vn; ++i) {
     48         for (j=0; j<vn; ++j) {
     49             printf("%d ", map[i][j]);
     50         }
     51         printf("
    ");
     52     }
     53 }
     54 
     55 int main() {
     56     int n, m;
     57     char dir[3];
     58     int i, j, k, v, r;
     59 
     60 #ifndef ONLINE_JUDGE
     61     freopen("data.in", "r", stdin);
     62 #endif
     63 
     64     while (scanf("%d %d",&n,&m)!=EOF && (n||m)) {
     65         vn = (m+1) * (n+1);
     66         memset(map, 0x2f, sizeof(map));
     67         r = 0;
     68         for (j=1; j<=m; ++j) {
     69             scanf("%d %s", &v, dir);
     70             if (v == 0) {
     71                 map[j-1][j] = map[j][j-1] = INF;
     72             } else {
     73                 if (dir[0] == '<' || dir[0] == '*')
     74                     map[j][j-1] = L/v;
     75                 if (dir[0] == '>' || dir[0] == '*')
     76                     map[j-1][j] = L/v;
     77             }
     78         }
     79         k = m+1;
     80         for (i=1; i<=n; ++i) {
     81             // column
     82             for (j=0; j<=m; ++j) {
     83                 scanf("%d %s", &v, dir);
     84                 if (v == 0) {
     85                     map[r+j][r+k+j] = map[r+k+j][r+j] = INF;
     86                 } else {
     87                     if (dir[0] == '^' || dir[0] == '*')
     88                         map[r+k+j][r+j] = L/v;
     89                     if (dir[0] == 'v' || dir[0] == '*')
     90                         map[r+j][r+k+j] = L/v;
     91                 }
     92             }
     93             r += k;
     94             // row
     95             for (j=1; j<=m; ++j) {
     96                 scanf("%d %s", &v, dir);
     97                 if (v == 0) {
     98                     map[r+j-1][r+j] = map[r+j][r+j-1] = INF;
     99                 } else {
    100                     if (dir[0] == '<' || dir[0] == '*')
    101                         map[r+j][r+j-1] = L/v;
    102                     if (dir[0] == '>' || dir[0] == '*')
    103                         map[r+j-1][r+j] = L/v;
    104                 }
    105             }
    106         }
    107         dijkstra();
    108         if (dis[vn-1] == INF)
    109             printf("Holiday
    ");
    110         else
    111             printf("%d blips
    ", dis[vn-1]);
    112     }
    113 
    114     return 0;
    115 }
  • 相关阅读:
    php获取真实ip地址原理及实现
    关于DateTime计算某个日期过后的多少天之后的日期
    关于get_include_path()和set_include_path()的问题
    LinQ In Action 学习第三章
    LinQ In Action 学习第二章
    LinQ in Action 学习第一章 例子。
    asp.net create windows application and setup service.
    JS alert()、confirm()、prompt()的区别
    php获取用户 地区 、ip地址
    购物车相关 js
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4147726.html
Copyright © 2020-2023  润新知