zoukankan      html  css  js  c++  java
  • hdu 2851(最短路)

    点击打开链接


    竟然是最短路!!!!

    藏的好深啊


    /*
    	求从路1走到路i的最小危险值,
    	给出n条路的起点和终点,当i,j两路有重合的,我们使map[i][j]=v[j];
    	把路当作最短路中的点,如果有重合的map[i][j]=v[j];
    	否则,map[i][j]=inf;
    	之后按照最短路的求法就可以了,注意最后要加上v[1];
    
    */
    #include"stdio.h"
    #include"string.h"
    #define N 2011
    #define inf 999999999
    
    struct node
    {
        int a,b,c;
    }A[N];
    int map[N][N];
    int n,m;
    int dis[N];
    int mark[N];
    void dijk()
    {
        int i,j,min,k;
        memset(mark,0,sizeof(mark));
        for(i=1;i<=n;i++)
            dis[i]=map[1][i];
        mark[1]=1;
        
        for(i=1;i<n;i++)
        {
            min=inf;k=-1;        
            for(j=1;j<=n;j++)
            {
                if(!mark[j]&&min>dis[j])
                {
                    min=dis[j];
                    k=j;
                }
            }
            if(k==-1)break;
            mark[k]=1;
            for(j=1;j<=n;j++)
            {
                if(!mark[j]&&dis[j]>dis[k]+map[k][j])
                    dis[j]=dis[k]+map[k][j];
            }
        }
    }
    int main()
    {
        int T;
        int i,j;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&m);
            
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=n;j++)
                    map[i][j]=inf;
                map[i][i]=0;
            }
    
            for(i=1;i<=n;i++)
                scanf("%d%d%d",&A[i].a,&A[i].b,&A[i].c);
            for(i=1;i<=n;i++)
            {
                for(j=i+1;j<=n;j++)
                {
                    if(A[i].b>=A[j].a&&A[j].b>=A[i].b)
                        map[i][j]=A[j].c;
                }
            }
            dijk();
            int a;
            while(m--)
            {
                scanf("%d",&a);
                if(dis[a]<inf)printf("%d
    ",dis[a]+A[1].c);
                else printf("-1
    ");
            }
        }
        return 0;
    }


  • 相关阅读:
    vue 移动端ui框架
    vue ESLint自动修复
    vue 隐藏滚动条
    生动形象地理解async await
    vue中的slot与slot-scope
    爬虫利器 puppeteer
    vue实例的生命周期
    vue 监听滚动事件,实现动态锚点
    转:视觉中国的NoSQL之路:从MySQL到MongoDB
    转:你需要知道的NoSQL数据库10件事
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3215150.html
Copyright © 2011-2022 走看看