CodeVS 1557 熱浪

來源:互聯網
上載者:User

標籤:

德克薩斯純樸的民眾們這個夏天正在遭受巨大的熱浪!!!他們的德克薩斯長角牛吃起來不錯,可是他們並不是很擅長生產富含奶油的乳製品。Farmer John此時以先天下之憂而憂,後天下之樂而樂的精神,身先士卒地承擔起向德克薩斯運送大量的營養冰涼的牛奶的重任,以減輕德克薩斯人忍受酷暑的痛苦。

 

FJ已經研究過可以把牛奶從威斯康辛運送到德克薩斯州的路線。這些路線包括起始點和終點先一共經過T (1 <= T <= 2,500)個城鎮,方便地標號為1到T。除了起點和終點外地每個城鎮由兩條雙向道路連向至少兩個其它地城鎮。每條道路有一個通過費用(包括油費,過路費等等)。

 

給定一個地圖,包含C (1 <= C <= 6,200)條直接連接2個城鎮的道路。每條道路由道路的起點Rs,終點Re (1 <= Rs <= T; 1 <= Re <= T),和花費(1 <= Ci <= 1,000)組成。求從起始的城鎮Ts (1 <= Ts <= T)到終點的城鎮Te(1 <= Te <= T)最小的總費用。

 

這題就用dijkstra啦,AC的同時也明白的dijkstra演算法的含義。

變數功能如其名,方便新手一起學習學習

 

 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define MAX 1000000  5 int map[2501][2501];//前一維代表起始點,後一維代表終止點  6 int pointsPassed[2501],shortestDist[2501]; 7 int T,C,Ts,Te;//T=城鎮數 C=道路數 Ts=起始鎮 Te=結束鎮  8 int Rs,Re,Ci; 9 10 int main()11 {12     int i,j,nowMinDist,toPoint;13     scanf("%d%d%d%d",&T,&C,&Ts,&Te);14     15     for(i=1;i<=T;i++)16         for(j=1;j<=T;j++)17             map[i][j]=MAX;18             19     for(i=1;i<=C;i++) 20     {21         scanf("%d%d%d",&Rs,&Re,&Ci);22         if(Ci<=map[Rs][Re])//根據輸入可能會有更便宜的路 23         {24             map[Rs][Re]=Ci;25             map[Re][Rs]=Ci;26         }27     }28     map[Ts][Ts]=0;29     30     for(i=1;i<=T;i++) //初始化 31     {32         shortestDist[i]=map[Ts][i];    33         pointsPassed[i]=0;34     }35     pointsPassed[Ts]=1;36     37     for(i=2;i<=T;i++)38     {39         nowMinDist=MAX; 40         toPoint=Ts;//每一次都從出發點找與其距離最短的未經過點 41                    //現在只是已知到這個點的最短路徑而已 42                       43         for(j=1;j<=T;j++)44             if((!pointsPassed[j]) && shortestDist[j]<nowMinDist) 45             {46                 toPoint=j; 47                 nowMinDist=shortestDist[j];48             }49         50         //收錄此點51         pointsPassed[toPoint]=1;52         for(j=1;j<=T;j++)53             if((!pointsPassed[j]) && map[toPoint][j]!=MAX)//從這個點擴充出向外的點 54                  if(shortestDist[toPoint] + map[toPoint][j] < shortestDist[j])55                        shortestDist[j]=shortestDist[toPoint] + map[toPoint][j];56     } 57     58     printf("%d",shortestDist[Te]);59     return 0;60 }

 

 

 

CodeVS 1557 熱浪

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.