zoukankan      html  css  js  c++  java
  • HDU 1874 畅通工程续

    转载请注明出处:http://blog.csdn.net/a1dark

    分析:一道最短路的水题、用dijkstra水过。。。

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define N 250
    #define INF 0x7fffffff
    int mpt[N][N];
    int dist[N];
    int vis[N];
    int m,n;
    void dijkstra(int x){
        memset(vis,0,sizeof(vis));
        for(int i=0;i<n;i++)
            dist[i]=mpt[x][i];
        vis[x]=1;
        dist[x]=0;
        for(int i=0;i<n-1;i++){
            int mink=INF,v;
            for(int j=0;j<n;j++){
                if(vis[j]==0&&dist[j]<mink){
                    mink=dist[j];
                    v=j;
                }
            }
            vis[v]=1;
            for(int j=0;j<n;j++){
                if(vis[j]==0&&mpt[v][j]!=INF&&mpt[v][j]+dist[v]<dist[j])
                    dist[j]=mpt[v][j]+dist[v];
            }
        }
    }
    void init(){
        for(int i=0;i<N;i++)
            for(int j=0;j<N;j++)
            {
                if(i==j)mpt[i][j]=0;
                else mpt[i][j]=INF;
            }
    }
    int main(){
        while(scanf("%d%d",&n,&m)!=EOF){
            init();
            int s,e,v;
            for(int i=1;i<=m;i++){
                scanf("%d%d%d",&s,&e,&v);
                if(v<mpt[s][e]){
                    mpt[s][e]=v;
                    mpt[e][s]=v;
                }
            }
            int start,end;
            scanf("%d%d",&start,&end);
            dijkstra(start);
            if(dist[end]!=INF)
                printf("%d
    ",dist[end]);
            else
                printf("-1
    ");
        }
        return 0;
    }
    


  • 相关阅读:
    Android Studio快捷键
    Eclipse常用快捷键
    沉浸式状态栏
    JAVA起名规范
    c语言求数组长度
    自定义checkbox风格
    退出所有应用,监控打开了什么活动
    android权限大全
    广播接收者Receiver
    ImageView的常用属性
  • 原文地址:https://www.cnblogs.com/james1207/p/3317803.html
Copyright © 2011-2022 走看看