北郵OJ 269 網路傳輸 14網研上機D

2021-10-23 01:52:49 字數 2028 閱讀 6381

本題的核心思想:因為要查詢多個點作為起點的情況,因此要多次dijkstra和多次對dis[ ]的初始化,又因為是無向圖,對floyd優化後,效率甚至比dijkstra高

所以我們採取優化的flyod(別忘了dis[j][i]=dis[i][j])+全排列演算法(因為我們求出了每個點到另外點的最短時間,但是如何走一段路總時間最短我們不得而知,因此我們最終總時間的大小,完全是由我們的排列順序來定的!我們只看要到的幾個點就行,其他點是中間過程,也就是我們的floyd處理的,我們不管,只要管好每次的起點和終點就行啦~!)

題目題目描述

網路的高效互聯與智慧型傳輸是提公升海量使用者服務請求對映效率的重要措施。在這個任務中,你要用最少的傳輸時間,將特定的資料來源傳送到指定的網路節點中。

我麼給定的網路一共包含n個節點(從1到n編號),其中節點1為資料來源。網路中有m條無向邊(u,v,w),表示一條傳輸線連線節點u和節點v,且資料通過這條傳輸線的平均時間為w。由於傳送機制的限制,當乙個節點接收到資料之後,它只能選擇與它互連的乙個節點,並將資料**到該節點。節點1在初始化時只會傳送一次資料,但在傳輸過程中它可以作為**節點。

網路中有k個目標節點,你需要計算出該資料從節點1傳送到所有k歌節點所需要的最短時間。注意目標節點可以按任意順序進行傳送,資料也可以多次經過同一節點。

輸入格式

輸入資料第一行是乙個整數t(t<=5),表示測試資料的組數。

對於每組測試資料:

第一行是三個正整數n,m,k(2<=n<=1000,1<=m<=n(n-1)/2,k<=10),分別表示節點數,邊數和目標節點數。

接下來m行,每行三個整數u,v,w(1<=u,v<=n, 0<=w<=1000,u!=v)。如上所述給出每條傳輸線。任意兩個網路節點之間最多隻會有一條邊相連。

最後一行是k個整數,給出所有的目標節點的編號,所有目標節點的編號都在2到n之間。

輸出格式

對於每組測試資料,輸出資料傳送到所有k個目標節點的最短時間。

樣例輸入

23 2 2

1 3 1

1 2 3

2 36 6 4

1 5 1

5 6 2

2 1 20

2 3 5

3 4 5

6 3 1

2 3 4 6

樣例輸出519

樣例說明

在第一組樣例中,最短路線是:1->3->1->2

在第二組樣例中,最短路線是:1->5->6->3->2->3->4,或者1->5->6->3->4->3->2

/*

23 2 2

1 3 1

1 2 3

2 36 6 4

1 5 1

5 6 2

2 1 20

2 3 5

3 4 5

6 3 1

2 3 4 6

樣例輸出519

*/#include

using

namespace std;

const

int inf=int_max/10;

const

int maxn=

1005

;int dis[maxn]

[maxn]

;int query[maxn]

;int

main()

dis[i]

[i]=0;

}for

(int i=

0;i)for

(int k=

1;k<=n;k++)}

}}for(

int i=

0;i)sort

(query,query+k)

;int answer=inf;

do answer=

min(sum,answer);}

while

(next_permutation

(query,query+k));

printf

("%d\n"

,answer);}

return0;

}

北郵OJ 268 程序管理 14網研上機C

markdown挺清新的!problem c.程序管理 題目描述 在作業系統中,程序管理是非常重要的工作,每個程序都有唯一的程序標識 pid 每個程序都可以啟動子程序,此時我們稱它為其子程序的父程序,除了pid為0的程序之外,每個程序有且只有乙個父程序,在這個任務中,你需要實時維護作業系統執行中的三...

北郵網研17上機題

找1 1000000000內所有可開二次根且可開三次根的數。別直接for迴圈,肯定超時。先把所有可能的答案都找出來,再做二次判斷。輸入9 81 4 8 5 7 9 2 2 5 3 5 5 9 3 5 8 3 4 3 8 5 7 9 5 1 9 輸出 1826 2040 include 在這裡插入描述...

2012北郵網研院上機題

a 列印字串 時間限制 1000 ms 記憶體限制 65536 kb 題目描述 老師有乙個問題想考考mabo,但是mabo不會,所以想請你來幫幫忙。問題如下 給一串字串,統計其中某個字元的個數。輸入格式 首先輸入乙個整數t,表示一共有t組資料 0 t 10。接下來每行乙個字母x x為 a z 或者 ...