中文題 題意就不說了,注意題目裡說的是所有的人等級差不能超過乙個值,而不是兩個兩個之間不能超過(這裡題意搞錯了wa半天),
建好圖,列舉可以在這個最短路裡的最高端和最低階再跑最短路 得到最小值就可以了。
1 #include2 #include3 #include4 #include5using
namespace
std;
6#define inf 99999999
7struct nodep[1002];8
int g[102][102],d[102];9
bool vis[102
];10
11int dij(int s,int n,int min1,int
max1)
1227 vis[mini]=true;28
for(int i=1;i<=n;i++)
29if(p[i].rank1>=min1&&p[i].rank1<=max1&&d[mini]+g[mini][i]30 d[i]=d[mini]+g[mini][i];31}
32 minn=inf;
33for(int i=1;i<=n;i++)
3439
return
minn;40}
4142
intmain()
4358}59
int temp,ans=inf;
60 temp=p[1
].rank1;
61 temp=max(p[1].rank1-c,0
);62
for(int i=temp;i<=p[1].rank1;i++)
6369 printf("
%d\n
",ans);70}
71 }
昂貴的聘禮 poj 1062 最短路
沒看好題目條件 隨便寫了個弗洛伊德就交了 實際上兩個身份差距大的人是連間接交易都不允許的 所以列舉每個等級區間並對其用dijkstra演算法找最小值 ac include include include include include include include include include ...
POJ 1062 昂貴的聘禮 最短路
假設乙個起點0,根據題目給出的權值構圖,答案就是從0到1之間的最短路。這裡要注意的是這個等級限制的問題。首先等級限制不是相鄰點之間的限制,而是整體路徑的。等級的限制可以通過假設乙個點為最低點求最短路,我假設某個點是最短路中等級最低的,然後求最短路。每列舉乙個點就求一次最短路,取最小的值。因為你列舉的...
poj 1062昂貴的聘禮(最短路)
題目 昂貴的聘禮 time limit 1000ms memory limit 10000k total submissions 61174 accepted 18489 description 年輕的探險家來到了乙個印第安部落裡。在那裡他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000...