zoukankan      html  css  js  c++  java
  • 【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 }
  • 相关阅读:
    智慧养老民政监管平台建设方案
    CF600E Lomsat gelral dsu on tree
    dsu on tree详解
    【Spring 从0开始】Spring5 新功能,整合日志框架 Log4j2
    【Spring 从0开始】JdbcTemplate 数据库事务管理
    【Spring 从0开始】JdbcTemplate 数据库事务参数
    【Spring 从0开始】JdbcTemplate 数据库事务管理
    【Spring 从0开始】JdbcTemplate 操作数据库
    【Spring 从0开始】AOP 操作
    【Spring 从0开始】AOP 操作中的相关术语、环境准备
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4147726.html
Copyright © 2011-2022 走看看