PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles相关的知识,希望对你有一定的参考价值。

解题思路:

先用Floyd算法求出全员最短路径矩阵。

然后使用DFS进行遍历,遍历的原则是就近贪心,对于每一个点先遍历离他最近的未访问点。

记录访问点的个数,同时用数组存放已访问点,如果访问点的个数不等于输入点数+1(加一是因为访问点把起点也算上了而输入时没有),说明不连通。

注:以下代码仅仅通过了给出的2个测试用例。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<vector>
#include<queue>

using namespace std;

const int maxn = 210;
const int inf = 1000000000;//即10^9 

int Adj[maxn][maxn]; 

int vNum,eNum;

bool vis[maxn] = {0};
int visNum = 0;

int totalDis = 0;
int path[maxn] = {0};

void DFS(int u){
	vis[u] = 1;
	path[visNum++] = u;
	
	int MIN = inf,v = -1;
	for(int i=0;i<=vNum;i++){	
		if(Adj[u][i]<MIN&&vis[i]==false){
			v = i;
			MIN = Adj[u][i];
		}
	}
	
	if(v==-1)return;
	
	totalDis += Adj[u][v];
	DFS(v); 
}

void Floyd(){
	for(int k=0;k<=vNum;k++){
		for(int i=0;i<=vNum;i++){
			for(int j=0;j<=vNum;j++){
				if(Adj[i][k]!=inf&&Adj[k][j]!=inf&&Adj[i][j]>Adj[i][k]+Adj[k][j]){
					Adj[i][j] = Adj[i][k]+Adj[k][j];
				}
			}
		}
	}
}


int main(){
	scanf("%d %d",&vNum,&eNum);
	
	for(int i=0;i<=vNum;i++){
		for(int j=0;j<=vNum;j++){
			Adj[i][j] = inf;
		}
	}
	
	for(int i=0;i<=vNum;i++){
		Adj[i][i] = 0;
	}
	
	int v1,v2,dis;
	for(int i=0;i<eNum;i++){
		scanf("%d %d %d",&v1,&v2,&dis);
		Adj[v1][v2] = Adj[v2][v1] = dis;
		 dis;
	}
	
	Floyd();
	
	DFS(0);
	
	if(visNum!=vNum+1){
		for(int i=0;i<visNum;i++){
			printf("%d",path[i]);
			if(i!=visNum-1)printf(" ");
		}
		printf("\\n");
		int pNum = vNum - visNum + 1;
		for(int i=1;i<=vNum;i++){
			if(vis[i]==false){
				printf("%d",i);
				pNum--;
				if(pNum!=0)printf(" ");
			}
		}
	}else{
		for(int i=0;i<visNum;i++){
			printf("%d",path[i]);
			if(i!=visNum-1)printf(" ");
		}
		printf("\\n");
		printf("%d\\n",totalDis);
	} 
}
 

以上是关于PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles的主要内容,如果未能解决你的问题,请参考以下文章

PAT(甲级)2019年春季考试 7-4 Structure of a Binary Tree

PAT(甲级)2019年春季考试题解

PAT(甲级)2021年春季考试 7-1 Arithmetic Progression of Primes

PAT(甲级)2017年春季考试

PAT(甲级)2021年春季考试 7-3 Structure of Max-Heap

PAT(甲级)2019年春季考试 7-2 Anniversary