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 甲级 2021年 秋季考试 经验总结、线上考试细节、考场题解
1.简单回顾 今天下午考完了秋季的考试,最终得了97分,第一题扣了3分,非常遗憾.还有一个多小时的时候就已经97了,回来和第一题的剩余3分周旋到最后,没能发现问题所在,不停考虑各种,我觉得可能是陷在已 ...
- PAT(甲级)2021年春季考试 7-1 Arithmetic Progression of Primes
思路:用筛除法打素数表(与之相对的是枚举加逐个判断)是降低时间复杂度的第一个点,第二个点是运用上数学技巧,给定了等差数列的范围(2-MAX),给定了个数,那么最大的等差是可以求出的.循环的第一层从最大 ...
- PAT(甲级)2021年春季考试 7-3 Structure of Max-Heap
考察:建堆,字符串的处理 建堆上,跳了坑,才发现自己之前的方法过于笨拙,详情见两种最大堆建堆方式 字符串处理上,走的弯路更大,但是也因此牢记了两个技巧 1. cin>>str可以用getl ...
- 【PAT】2021年冬季考试甲级,摸鱼游记、92分
T1,简单模拟,20/20分 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; int a[max ...
- 【PAT】2021年春季PAT甲级题解
文章目录 1. Arithmetic Progression of Primes (20 分) 题意 解法 暴力+剪枝 2. Lab Access Scheduling (25 分) 题意 解法 排序 ...
- PAT(甲级)2019春季考试(Python实现)
7-1 Sexy Primes 7-1 Sexy Primes 分数 20 作者 陈越 单位 浙江大学Sexy primes are pairs of primes of the form (p, p ...
- 【PAT】2020年春季考试划水准备贴
1.起因 因为之前NOIP凉了,所以算法竞赛没拿到任何加分加好感项,感觉白敲了三年代码 偶然间看到这个而且感觉挺简单,就试试三位一体有没有用,或者暑假实习,再不济反正把乙考了大学在水甲级和顶级凑一凑考 ...
- 【PAT】2020年春季考试乙级题目、答案、摸鱼、游记、93分
T1 对称日 (15分) 7-1 对称日 (15分) 央视新闻发了一条微博,指出 2020 年有个罕见的"对称日",即 2020 年 2 月 2 日,按照 年年年年月月日日 格式组 ...
- PAT甲级线上考试备考
我本人刷了两遍题库 之前考了两次都是四十几分,我认为目前甲级题库已经过时了 (对于有算法基础的同学来说) 前100题没有做的必要 除非是典型算法. DFS 和 回溯是相当重要的考点,如果有时间的话一定 ...
最新文章
- Golang的interface实践
- [20150113]关于oracle的存储结构.txt
- 微软解释Edge浏览器比Chrome更加安全的原因
- python 字典定义日志用法_python中字典(Dictionary)用法实例详解
- python函数 模块先加载到内存后执行_Python从内存中使用编译后的模块
- 【002:带参宏调试】
- ASP.NET中进行消息处理(MSMQ) 一 (转)
- Asp.Net异步加载
- php while次数,PHP While 循环
- ORACLE错误编码大全
- Win10专业工作站版本激活并获得数字权利的方法和密钥
- Docker和Jenkins构建项目总结
- 提升领导力这7个法则,你不得不知道
- Word文档中如何打外国人姓名间隔的那一个小点
- 相机响应曲线、ISO详解
- 程序员高效率工作工具推荐(必备工具)
- 【七夕如何根据情侣倾听的音乐进行薅羊毛】背景音乐是否会影响情侣对酒的选择
- 刚毕业做真实运维简历模板参考
- verilog报错汇总(1)
- lettuce MGET性能分析