• bzoj 2763: [JLOI2011]飞行路线


    233333(别省总是这么良心。。。)

    把SPFA的dis[]换成dis[][]搞就行了。。。

     1 #include<bits/stdc++.h>
     2 #define N 200005
     3 #define LL long long
     4 #define inf 0x3f3f3f3f
     5 #define ls c[x][0]
     6 #define rs c[x][1]
     7 using namespace std;
     8 inline int ra()
     9 {
    10     int x=0,f=1; char ch=getchar();
    11     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
    12     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    13     return x*f;
    14 }
    15 struct node{
    16     int next,to,v;
    17 }e[N<<1];
    18 int head[N],cnt,n,k,m,S,T;
    19 int dis[10005][12],q[(N<<2)+5];
    20 bool inq[N];
    21 void insert(int x, int y, int v)
    22 {
    23     e[++cnt].to=y; e[cnt].next=head[x]; e[cnt].v=v;
    24     head[x]=cnt;
    25 }
    26 void SPFA()
    27 {
    28     for (int i=0; i<=n; i++) for (int j=0; j<=k; j++) dis[i][j]=inf;
    29     for (int j=0; j<=k; j++) dis[S][j]=0;
    30     int l=0,r=1; q[0]=S; inq[S]=1;
    31     while (l<r)
    32     {
    33         int x=q[l++]; if (l==N<<2) l=0;
    34         for (int i=head[x];i;i=e[i].next)
    35         {
    36             if (dis[e[i].to][0]>dis[x][0]+e[i].v)
    37             {
    38                 dis[e[i].to][0]=dis[x][0]+e[i].v;
    39                 if (!inq[e[i].to])
    40                 {
    41                     inq[e[i].to]=1;
    42                     q[r++]=e[i].to;
    43                     if (r==N<<2) r=0;
    44                 }
    45             }
    46             for (int j=1; j<=k; j++)
    47             {
    48                 if (dis[e[i].to][j]>dis[x][j]+e[i].v)
    49                 {
    50                     dis[e[i].to][j]=dis[x][j]+e[i].v;
    51                     if (!inq[e[i].to])
    52                     {
    53                         inq[e[i].to]=1;
    54                         q[r++]=e[i].to;
    55                         if (r==N<<2) r=0;
    56                     }
    57                 }
    58                 if (dis[e[i].to][j]>dis[x][j-1])
    59                 {
    60                     dis[e[i].to][j]=dis[x][j-1];
    61                     if (!inq[e[i].to])
    62                     {
    63                         inq[e[i].to]=1;
    64                         q[r++]=e[i].to;
    65                         if (r==N<<2) r=0;
    66                     }
    67                 }
    68             }
    69         }
    70         inq[x]=0;
    71     }
    72 }
    73 int main()
    74 {
    75     n=ra(); m=ra(); k=ra(); S=ra(); T=ra();
    76     for (int i=1; i<=m; i++)
    77     {
    78         int x=ra(),y=ra(),v=ra();
    79         insert(y,x,v);
    80         insert(x,y,v);
    81     }
    82     SPFA();
    83     int ans=dis[T][0];
    84     for (int i=1; i<=k; i++)
    85         ans=min(ans,dis[T][i]);
    86     cout<<ans;
    87 }
  • 相关阅读:
    mybaits错误解决:There is no getter for property named 'id' in class 'java.lang.String'(转)
    Tomcat配置虚拟路径
    FireFox背景亮度修改
    简单的百度贴吧爬虫实现(urllib)
    python知识总结
    QT-- MainWindow外的cpp文件调用ui
    数据结构--栈的实现
    数据结构-- 队列的实现
    经典排序算法---归并排序
    经典排序算法---希尔排序
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6482375.html
Copyright © 2020-2023  润新知