zoukankan      html  css  js  c++  java
  • bzoj 2007 海拔 —— 最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2007

    最后一定是起点周围一片0,终点周围一片1;

    所以建出图来跑最短路即可。

    代码如下:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    using namespace std;
    int const xn=250005,xm=8e6+5;
    int n,hd[xn],ct,to[xm],nxt[xm],w[xm],dis[xn];
    bool vis[xn];
    struct N{
      int id,d;
      N(int x=0,int d=0):id(x),d(d) {}
      bool operator < (const N &y) const
      {return d>y.d;}
    };
    priority_queue<N>q;
    int rd()
    {
      int ret=0,f=1; char ch=getchar();
      while(ch<'0'||ch>'9'){if(ch=='-')f=0; ch=getchar();}
      while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();
      return f?ret:-ret;
    }
    void add(int x,int y,int z){to[++ct]=y; nxt[ct]=hd[x]; hd[x]=ct; w[ct]=z;}
    int id(int x,int y)
    {
      if(x<1||y>n)return n*n+1;
      if(x>n||y<1)return 0;
      return (x-1)*n+y;
    }
    void dij()
    {
      memset(dis,0x3f,sizeof dis);
      dis[0]=0; q.push(N(0,0));
      while(q.size())
        {
          int x=q.top().id; q.pop();
          if(vis[x])continue; vis[x]=1;
          for(int i=hd[x],u;i;i=nxt[i])
        if(dis[u=to[i]]>dis[x]+w[i])
          {
            dis[u]=dis[x]+w[i];
            q.push(N(u,dis[u]));
          }
        }
    }
    int main()
    {
      n=rd();
      for(int i=1;i<=n+1;i++)
        for(int j=1,x;j<=n;j++)
          x=rd(),add(id(i,j),id(i-1,j),x);
      for(int i=1;i<=n;i++)
        for(int j=1,x;j<=n+1;j++)
          x=rd(),add(id(i,j-1),id(i,j),x);
      for(int i=1;i<=n+1;i++)
        for(int j=1,x;j<=n;j++)
          x=rd(),add(id(i-1,j),id(i,j),x);
      for(int i=1;i<=n;i++)
        for(int j=1,x;j<=n+1;j++)
          x=rd(),add(id(i,j),id(i,j-1),x);
      dij();
      printf("%d
    ",dis[n*n+1]);
      return 0;
    }
  • 相关阅读:
    jsonp的实现原理和缺点
    vue $set的使用初了解
    js将多维数组转换为一维数组
    微信小程序之页面打开数量限制
    ZOJ 1463 Brackets Sequence
    CSUOJ 1248 非变性聚丙烯酰胺凝胶电泳
    ZOJ 1524 Supermarket
    POJ 1012 Joseph
    ZOJ 1276 Optimal Array Multiplication Sequence
    POJ 1742 Coins
  • 原文地址:https://www.cnblogs.com/Zinn/p/10165753.html
Copyright © 2011-2022 走看看