POJ 3615 牛的最小最大起跳高度問題 Floyd演算法的變形應用

來源:互聯網
上載者:User

      此題求牛從起點到終點路徑中最大權值最小的那條路徑,將Floyd演算法稍作修改即可,注意此題輸入輸出處理不當可能引起逾時,一般scanf及printf更節省時間。

#include <iostream><br />#include <cstdio><br />#define MAX_VEX 305<br />#define MAX_WEI 1000005<br />using namespace std;<br />int A[MAX_VEX][MAX_VEX];<br />//用cin,cout會逾時<br />int main(){<br />int N,M,T,i,j,k,h;<br />int s,e,w;<br />//cin>>N>>M>>T;<br />scanf("%d%d%d",&N,&M,&T);<br />for (i = 1;i <= N;i++)<br />for (j = 1;j <= N;j++)<br />{<br />A[i][j] = MAX_WEI;<br />}<br />for (i = 0; i < M;i++)<br />{<br />//cin>>s>>e>>w;<br />scanf("%d%d%d",&s,&e,&w);<br />A[s][e] = w;<br />}<br />//關鍵代碼部分<br />for (i = 1;i <= N;i++)<br />for (j = 1;j <= N;j++){<br />if (A[j][i] == MAX_WEI)<br />continue;//i,j之間不可直達<br />for (k = 1;k <= N;k++){<br />if (A[i][k] == MAX_WEI) continue;<br />h = A[j][i] > A[i][k]?A[j][i]:A[i][k];<br />if(h < A[j][k]) A[j][k] = h;<br />}<br />}<br />for (i = 0;i < T;i++){<br />//cin>>s>>e;<br />scanf("%d%d",&s,&e);<br />if (A[s][e] == MAX_WEI) //cout<<"-1"<<endl;<br />printf("-1/n");<br />else //cout<<A[s][e]<<endl;<br />printf("%d/n",A[s][e]);<br />}<br />return 0;<br />}<br /> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.