题目:垃圾箱分布
题意:选一垃圾桶的位置到所有居民点距离最佳,“到所有居民点的最短距离最长的地方”意思就是将每个垃圾桶位置的到居民点最短的路中筛选最长的那个的垃圾桶作为结果~
思路:将所有垃圾桶的位置利用Dijkstra依次搜出到各个居名点的最短路,然后加入到一个结构体数组中,注意当超出限制范围无需加入,最后按要求排序即可。
注意输入时需要用字符串处理,将G的加上n,即垃圾桶的编号为n以后的数,注意编号不只是个位数~
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1020;
const int inf = 999999999;
int g[maxn][maxn],dis[maxn],visit[maxn];
int n,m,k,ds;
struct bag{
int id,mindis;
double avg;
}ans[15];
bool cmp(bag a,bag b){
if(a.mindis == b.mindis){
if(a.avg == b.avg) return a.id < b.id;
return a.avg < b.avg;
}