1072.Gas Station

【题意】
        找一个到所有房屋最短距离最远,平均距离最近,且覆盖所有房屋的加油站

【思路】
        把住房和加油站都视作普通节点,对每个加油站用一次Dijkstra算法即可

【注意点】

        此题Dijkstra算法中可以不用遍历到每个点,只要把所有房屋都访问到了就可以了,即使有些加油站访问不到或者超出了服务范围也不要紧。


#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define MAXIMUM 0x0fffffff

int n,m,k,ds;
vector visited;
vector dist;
vector> weight;

typedef struct{
	int index;
	int minDist;
	float avgDist;
}gasStation;

bool cmp(gasStation g1, gasStation g2){
	if(g1.minDist>g2.minDist){
		return 1;
	}
	else if(g1.minDist==g2.minDist && g1.avgDist> n >> m >> k >> ds;
	visited.resize(n+m);
	dist.resize(n+m);
	weight.resize(n+m,vector(n+m));

	for(int i=0; i> ends[0] >> ends[1] >> d;
		index[0] = lable2index(ends[0]);
		index[1] = lable2index(ends[1]);
		weight[index[0]][index[1]] = weight[index[1]][index[0]] = d;
	}
	
	vector stations;
	//Dijkstra
	for(int gasIndex=n; gasIndexds){
				valid = 0;
				break;
			}
			index = nextIndex;
			visited[index] = 1;
			//编号小于n的点代表住房
			if(index


你可能感兴趣的:(PAT(Advanced,Level))