題目:
題意:給出n個點,m個邊。給出每個點的權值,每個邊的權值。求建立一棵樹,root=1,求這棵樹的最小費用,費用=樹上每條邊*子樹中各頂點的權值。
思路:root的權值是沒用的,而其餘節點是必須用的,每條邊*子樹中各定點的權值=各個點*點到根的最短路,於是轉化成了root到各個點的最短路。
610ms~
view code
1 #include 2 #include 3 #include 4注意:long longusing
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 }
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 遍歷 ...