zoukankan      html  css  js  c++  java
  • POJ 2387 Til the Cows Come Home

    POJ 2387 Til the Cows Come Home

    这里写图片描述

    #include <iostream>
    #include<string.h>
    
    
    using namespace std;
    const int MAXN=2010;
    const int INF=99999999;
    
    bool vis[MAXN];
    int pre[MAXN];
    int cost[MAXN][MAXN];
    int lowcost[MAXN];
    int beg;
    int n,t;
    void Dijkstra(int cost[][MAXN],int lowcost[],int beg)
    {
        for(int i=0; i<n; i++)
        {
            lowcost[i]=INF;
            vis[i]=false;
            pre[i]=-1;
        }
        lowcost[beg]=0;
        for(int j=0; j<n; j++)
        {
            int k=-1;
            int _min=INF;
            for(int i=0; i<n; i++)
            {
                if(!vis[i]&&lowcost[i]<_min)
                {
                    _min=lowcost[i];
                    k=i;
                }
            }
            if(k==-1)
            {
                break;
            }
            vis[k]=true;
            for(int i=0; i<n; i++)
            {
                if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i])
                {
                    lowcost[i]=lowcost[k]+cost[k][i];
                    pre[i]=k;
                }
            }
        }
    }
    
    
    int main()
    {
    
        while(cin>>t>>n)
        {
            memset(vis,0,sizeof(vis));
            memset(pre,0,sizeof(pre));
            memset(cost,0,sizeof(cost));
            memset(lowcost,0,sizeof(lowcost));
            int from,to,c;
            for(int i=0; i<n; i++)
            {
                for(int j=0; j<n; j++)
                {
                    if(i==j)
                        cost[i][j]=0;
                    else
                        cost[i][j]=cost[j][i]=INF;
                }
            }
            for(int i=0; i<t; i++)
            {
                cin>>from>>to>>c;
                if(cost[from-1][to-1]>c)
                {
                    cost[from-1][to-1]=c;
                    cost[to-1][from-1]=c;
                }
    
            }
    
            beg=n-1;
            Dijkstra(cost,lowcost,n-1);
    //        for(int i=0;i<n;i++)
    //        cout<<lowcost[i]<<" ";
    //        cout<<endl;
    //        for(int i=0;i<n;i++)
    //            cout<<pre[i]<<" ";
    //        cout<<endl;
            cout<<lowcost[0]<<endl;
        }
    
        return 0;
    }
  • 相关阅读:
    相关系数
    T检验
    Python模块常用的几种安装方式
    DOM与SAX读取XML方式的不同
    Base64编码
    node.js网页爬虫
    Node.js Express 框架
    Node.js Web 模块
    Node.js GET/POST请求
    Node.js 常用工具
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9386937.html
Copyright © 2011-2022 走看看