M 昂貴的聘禮 超級源點加dij

2021-10-08 09:33:33 字數 1807 閱讀 4409

本菜雞還是太菜了,看了半天別人的題解發現理解錯題目意思了,題目的等級是這樣規定的如果你的等級是x,最大差值k,那麼你可以交易的人的等級就在【x-k,x+k】之間,其他等級都不可以,然後因為你沒有等級限制,那麼就特別難搞,我們就列舉假設和我們交換的人的最低等級,但是最低等級+m要包含酋長的等級所以最低等級就是在[rank[1]-m,rank[1]];

然後就是**了

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

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

#define lowbit(x) x & -x

#define fi first

#define se second

#define bug cout<<"----acac----"<#define ios ios::sync_with_stdio(false), cin.tie(0),cout.tie(0)

using

namespace std;

const

int maxn =

1e5+50;

const

int maxm =

1.5e5+50

;const

double eps =

1e-7

;const

double inf =

0x3f3f3f3f

;const ll lnf =

0x3f3f3f3f3f3f3f3f

;const

int mod =

1e9+7;

const

double pi=

3.141592653589

;int rank1[

105]

,dis[

105]

,vis[

105]

,head[

105]

;int n,m,cnt;

struct node

a[100005];

void

add(

int u,

int v,

int val)

struct point

bool

operator

<

(const point &x)

const};

void

dij(

int s,

int k)

priority_queueq;

dis[s]=0

; q.

push

(point

(s,0))

;while

(!q.

empty()

)}}}

intmain()

}int ans=inf;

for(

int i=rank1[1]

-m;i<=rank1[1]

;i++

)printf

("%d\n"

,ans)

;return0;

}

POJ 1062 昂貴的聘禮 最短路 超級源點

年輕的探險家來到了乙個印第安部落裡。在那裡他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000個金幣作為聘禮才答應把女兒嫁給他。探險家拿不出這麼多金幣,便請求酋長降低要求。酋長說 嗯,如果你能夠替我弄到大祭司的皮襖,我可以只要8000金幣。如果你能夠弄來他的水晶球,那麼只要5000金幣就行...

M 昂貴的聘禮(SPFA)

年輕的探險家來到了乙個印第安部落裡。在那裡他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000個金幣作為聘禮才答應把女兒嫁給他。探險家拿不出這麼多金幣,便請求酋長降低要求。酋長說 嗯,如果你能夠替我弄到大祭司的皮襖,我可以只要8000金幣。如果你能夠弄來他的水晶球,那麼只要5000金幣就行...

加超級源點的Kruskal演算法

東東在老家農村無聊,想種田。農田有 n 塊,編號從 1 n。種田要灌氵 眾所周知東東是乙個魔法師,他可以消耗一定的 mp 在一塊田上施展魔法,使得黃河之水天上來。他也可以消耗一定的 mp 在兩塊田的渠上建立傳送門,使得這塊田引用那塊有水的田的水。1 n 3e2 黃河之水天上來的消耗是 wi,i 是農...