又到了一年一度的明明生日了,明明想要買b樣東西,巧的是,這b樣東西**都是a元。
但是,商店老闆說最近有**活動,也就是:
如果你買了第i樣東西,再買第j樣,那麼就可以只花k[i,j]元,更巧的是,k[i,j]竟然等於k[j,i]。
現在明明想知道,他最少要花多少錢。
輸入格式:
第一行兩個整數,a,b。
接下來b行,每行b個數,第i行第j個為k[i,j]。
我們保證k[i,j]=k[j,i]並且k[i,i]=0。
特別的,如果k[i,j]=0,那麼表示這兩樣東西之間不會導致優惠。
輸出格式:
僅一行乙個整數,為最小要花的錢數。
輸入樣例#1:
【樣例輸入1】1 10
【樣例輸入2】
3 30 2 4
2 0 2
4 2 0
輸出樣例#1:
【樣例輸出1】1【樣例輸出2】
7
樣例解釋2
先買第2樣東西,花費3元,接下來因為優惠,買1,3樣都只要2元,共7元。
(同時滿足多個「優惠」的時候,聰明的明明當然不會選擇用4元買剩下那件,而選擇用2元。)
資料規模
對於30%的資料,1<=b<=10。
對於100%的資料,1<=b<=500,0<=a,k[i,j]<=1000。
最小生成樹,只是有些要注意的地方。。。
附**:
#include#include#include#define maxn 510
using namespace std;
int n,m,k=1,fa[maxn];
struct nodea[maxn*maxn];
inline int read()
while(c>='0'&&c<='9')
return date*w;
}bool cmp(const node &x,const node &y)
for(int i=1;i<=m;i++)
k--;
sort(a+1,a+k+1,cmp);
kruskal();
return 0;
}
洛谷 P1194 買禮物
又到了一年一度的明明生日了,明明想要買bb樣東西,巧的是,這bb樣東西 都是aa元。但是,商店老闆說最近有 活動,也就是 如果你買了第ii樣東西,再買第jj樣,那麼就可以只花k ki,j 元,更巧的是,k ki,j 竟然等於k kj,i 現在明明想知道,他最少要花多少錢。輸入格式 第一行兩個整數,a...
洛谷 P1194 買禮物
這道題其實就是轉化乙個模型就可以了。買了乙個另外乙個又優惠,其實就相當於在優惠的時候連一條邊,因為不可能多買,所以就是建一棵最小生成樹。最後因為肯定買了一件物品,要加上最初的單價。include using namespace std struct node node e 510000 int pr...
洛谷 P1194 買禮物
又到了一年一度的明明生日了,明明想要買b樣東西,巧的是,這b樣東西 都是a元。但是,商店老闆說最近有 活動,也就是 如果你買了第i樣東西,再買第j樣,那麼就可以只花 k 元,更巧的是,k 竟然等於 k 現在明明想知道,他最少要花多少錢。可以這樣想,購買這些東西會構成乙個樹狀關係,除了根之外其他點都按...