冷鋒在非洲完成任務後回到了狼牙特種作戰部隊。我們知道在戰狼二結尾,冷鋒正在北極執行任務,而部隊發現了龍小雲在c國的訊息,讓冷鋒盡快趕往c國。我們知道現在地球上共有n個國家和地區,編號分別為1,2,3...n。國家與國家之間的可能通航班(可能不止一次),也可能沒有通航班。共有m次航班,冷鋒已經知道了這m次航班的資訊(起點 終點,時間)北極的編號是1,c國的編號是n。
而冷峰身為超級英雄一樣的的存在,他有一次將航班的時間降為零的能力。
樣例數t(t<=10),接下來又t組樣例。 每組樣例先輸入n , m(n<=1000 , m<=n*(n-1)/2)。
下面m行航班的資訊,分別為start , end , time(time <= 100000).表示start和end兩地可以互相到達。
對每組樣例,輸出冷鋒到達c國的最短時間,若不能到達輸出 "impossible"。3
3 1
1 2 1 4
3 1 2 4
2 3 1
2 4 4
3 31 2 100000
2 3 1
1 3 2
impossible 4
0思路: 可以求出起點到所有點的最短路和終點到所有點的最短路,用dis1[maxn],dis2[maxn]表示,現在
考慮列舉每一條邊。對於邊(u , v),如果兩點有值的話我們就可以嘗試將它的時間降為0,那麼
ans = min(ans , min(dis1[u]+dis2[v] , dis1[v]+dis2[u]))。列舉每一條邊,取最小就好了。
#include
using namespace std;
#define n 1005
#define nn 500000
int mp[n][n],dist1[n],dist2[n],vis[n],n;
void dij(int s,int dist)
vis[s]=1;
for(j=1; jdist[i]&&!vis[i])
}vis[k]=1;
for(i=1; i<=n; i++)
}}int main()
for(i=1; i<=m; i++)
dij(1,dist1);
dij(n,dist2);
int ans=1e9;
for(i=1; i<=n-1; i++)
for(j=i+1; j<=n; j++)
if(ans>=1e9)
puts("impossible");
else
printf("%d\n",ans);
}return 0;
}
2 17 訊號同步程式設計
1.基本概念 程序間的同步是指一組併發程序進行互相合作,互相等待,使得各程序按照一定的順序執行的過程。2.生產者與消費者問題 2.1 訊號量sem val初始值設為0 2.2 生產者每生產好一件產品,就sem val 1 釋放訊號量 2.3 消費者開始因sem val 0而阻塞,當sem val 0...
Java學習2 17 事件
確定事件 事件監聽 繫結 actionlistener,mouselistener,keylistener,windowlistener eg 簡單的button按鈕觸發事件導致窗體改變顏色 可以用內部類來實現事件,再繫結 1.在構造器裡面設定。this.setlayout new flowlayo...
實現演算法2 17的程式
algo2 8.cpp 實現演算法2.17的程式 include c1.h define n 2 typedef char elemtype include c2 3.h include func2 2.cpp include bo2 32.cpp include func2 3.cpp 包括equ...