POJ 2485 Prim 找最長的邊

2022-04-10 02:58:13 字數 1513 閱讀 2583

a國沒有高速公路,因此a國的交通很困難。**意識到了這個問題並且計畫建造一些高速公路,以至於可以在不離開高速公路的情況下在任意兩座城鎮之間行駛。

a國的城鎮編號為1到n, 每條高速公路連線這兩個城鎮,所有高速公路都可以在兩個方向上使用。高速公路可以自由的相互交叉。

a國**希望儘量減少最長高速公路的建設時間(使建設的最長的高速公路最短),但是他們要保證每個城鎮都可以通過高速公路到達任意一座城鎮。

input

第乙個輸入的數字t,代表著t組樣例。

接下來輸入乙個n, 代表一共有n個城鎮。

然後讀入乙個n*n的矩陣,第i行第j列代表從i到j高速公路的距離。

output

對於每個測試用例,您應輸出乙個包含整數的行,該整數是要構建的最長道路的長度,以便連線所有村莊,並且此值最小。

sample input

30 990 692

990 0 179

692 179 0

sample output

hint

huge input,scanf is recommended.
上一道題改了兩行,重寫main函式就過了,真的弟弟.

#include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

#define mm0(a) memset(a,0,sizeof(a))

#define mm(a,b) memset(a,b,sizeof(a))

#define each(a,b,c) for(int a=b;a<=c;a++)

#define de(x) cout << #x << " " << (x) //const int maxn = 400+5;

const int maxn = 2e3+5;

const int inf = 0x3f3f3f3f;

inline int read()

bool vis[maxn];

int lowc[maxn];

int prim(int cost[maxn],int n)

}//de(minc);

if(minc==-1)return -1;//又把==敲成乙個等號了

if(minc>ans)ans=minc;

vis[p]=true;

for(int j=0;jcost[p][j])

lowc[j]=cost[p][j];}}

return ans;

}int cost[maxn][maxn];/*1

30 990 692

990 0 179

692 179 0

*/int main()

}printf("%d\n",prim(cost,n));

}}

Prim演算法求最大權,POJ 2485

解題報告 這裡有一點要注意的是,第乙個點時,dis陣列還沒有初始化,還全部為inf。第一次來到更新權時,才把鄰接矩陣的資料存到dis中。include include include include include using namespace std define n 10005 define ...

poj2762 Tarjan dp找最長鏈

給定一副有向圖,選擇兩個點v和u,要求v能到達u或者u能到達v。問是否可以對於圖中的每乙個點對都能滿足條件?輸出yes或no。強連通分量中的點可以看作乙個點,所以先tarjan縮點。然後當且僅當縮點圖是一條鏈時才能滿足任意乙個點對都能從一點到達另一點。因為如果縮點圖有分叉,則分叉之間一定是不可達的。...

找最長的字串

本題要求編寫程式,針對輸入的n個字串,輸出其中最長的字串。輸入格式 輸入第一行給出正整數n 隨後n行,每行給出乙個長度小於80的非空字串,其中不會出現換行符,空格,製表符。輸出格式 在一行中用以下格式輸出最長的字串 the longest is 最長的字串 如果字串的長度相同,則輸出先輸入的字串。輸...