最短路變形 poj3013

2022-07-26 15:09:07 字數 1017 閱讀 2124

題目:

題意:給出n個點,m個邊。給出每個點的權值,每個邊的權值。求建立一棵樹,root=1,求這棵樹的最小費用,費用=樹上每條邊*子樹中各頂點的權值。

思路:root的權值是沒用的,而其餘節點是必須用的,每條邊*子樹中各定點的權值=各個點*點到根的最短路,於是轉化成了root到各個點的最短路。

610ms~

view code

1 #include 2 #include 3 #include 4

using

namespace

std;

5const

long

long inf=10000000000;6

const

int m=50005;7

intn,m,edgenum;

8long

long

dis[m];

9int

head[m];

10int

visit[m];

11int

weight[m];

12struct

edgeedge[m*2

];17

struct

node

23};

24void

init()32}

33void addedge(int a,int b,int

c)39

void dij(int

u)60}61

}62return;63

}64intmain()

78 dij(0

);79

long

long res=0;80

for(i=0;i)

84if(i==n) printf("

%lld\n

",res);

85else puts("

no answer");

86}87return0;

88 }

注意:long long

POJ 1797 最短路變形

題目大意 有n個城市,m條道路,在每條道路上有乙個承載量,現在要求從1到n城市最大承載量,而最大承載量就是從城市1到城市n所有通路上的最大承載量 解題思路 相當於讓選擇的那條路最小值盡量大,更改一下最短路即可 include include include include include inclu...

poj 1797 最短路變形

思路 題目意思很簡單,n個頂點,m條路,每條路上都有最大載重限制,問1 n最大載重量。其實就是一最短路的變形,定義weight i 表示源點到頂點i的最大載重量,初始化為0,之後不斷去更新就行了。1 include2 include3 include4 include5 include6 inclu...

poj 3013 陣列模擬鄰接表 spfa

首先,自已先用陣列模擬鄰接鍊錶,以前使用模版的,現在可以不看模版自己寫了。邊的資訊 struct edge edge max 3 1 一定要邊的範圍 int head max 頭節點 void init 初始化資訊,1 插入邊void insert int u,int v,int64 len 遍歷 ...