zoukankan      html  css  js  c++  java
  • bzoj2662: [BeiJing wc2012]冻结 最短路 建图

    好久没有1A题啦♪(^∇^*)

    一个sb建图,我居然调样例调了10min

    看起来是双向边,其实在建图的时候要当成有向图,

    否则他会时间倒流(233)

    把每个点裂成k个点,然后把每条边裂成4条边(正向反向&膜不膜)

    (话说我好像不会用openlivewriter贴代码,尴尬了)

     1 #include <bits/stdc++.h>
     2 #define poi(x,y) ((x)*(k+1)+(y))
     3 #define st poi(1,0)
     4 #define INF 2000000000
     5 using namespace std;
     6 int n,m,k,E;
     7 int from[2000001],to[2000001],nex[2000001];
     8 int fir[2000001],d[2000001],w[2000001];
     9 void add(int x,int y,int z)
    10 {
    11     from[++E]=x;to[E]=y;w[E]=z;nex[E]=fir[x];fir[x]=E;
    12 }
    13 int work()
    14 {
    15     for(int i=1;i<=poi(n,k);i++)
    16         d[i]=INF;
    17     d[st]=0;
    18     priority_queue<pair<int,int> > q;
    19     for(int i=fir[st];i;i=nex[i])
    20         q.push(make_pair(-w[i],i));
    21     while(!q.empty())
    22     {
    23         int tem=q.top().second;q.pop();
    24         if(to[tem]>=poi(n,0))
    25             int e=1;
    26         if(d[from[tem]]!=INF && d[from[tem]]+w[tem]<d[to[tem]])
    27         {
    28             d[to[tem]]=d[from[tem]]+w[tem];
    29             for(int i=fir[to[tem]];i;i=nex[i])
    30                 q.push(make_pair(-w[i],i));
    31         }
    32     }
    33     return d[poi(n,k)];
    34 }
    35 int main()
    36 {
    37     scanf("%d%d%d",&n,&m,&k);
    38     for(int i=1;i<=m;i++)
    39     {
    40         int from,to,wei;
    41         scanf("%d%d%d",&from,&to,&wei);
    42         for(int j=0;j<k;j++)
    43             add(poi(from,j),poi(to,j+1),wei/2),
    44             add(poi(to,j),poi(from,j+1),wei/2);
    45         for(int j=0;j<=k;j++)
    46             add(poi(from,j),poi(to,j),wei),
    47             add(poi(to,j),poi(from,j),wei);
    48     }
    49     for(int i=0;i<k;i++)
    50         add(poi(n,i),poi(n,k),0);
    51     printf("%d
    ",work());
    52     return 0;
    53 } 
  • 相关阅读:
    window C/C++ 简单的IDE编译器
    ubuntu 安装 lamp
    架构设计
    linux 性能分析
    wifi基本原理
    openwrt 编译
    学习笔记day5:inline inline-block block区别
    脱离原来文档流产生浮动框
    meta标签清理缓存
    百度web前端面试2015.10.18
  • 原文地址:https://www.cnblogs.com/wanglichao/p/7337376.html
Copyright © 2011-2022 走看看