解题思路:

先用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相关推荐

  1. 记PAT 甲级 2021年 秋季考试 经验总结、线上考试细节、考场题解

    1.简单回顾 今天下午考完了秋季的考试,最终得了97分,第一题扣了3分,非常遗憾.还有一个多小时的时候就已经97了,回来和第一题的剩余3分周旋到最后,没能发现问题所在,不停考虑各种,我觉得可能是陷在已 ...

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

    思路:用筛除法打素数表(与之相对的是枚举加逐个判断)是降低时间复杂度的第一个点,第二个点是运用上数学技巧,给定了等差数列的范围(2-MAX),给定了个数,那么最大的等差是可以求出的.循环的第一层从最大 ...

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

    考察:建堆,字符串的处理 建堆上,跳了坑,才发现自己之前的方法过于笨拙,详情见两种最大堆建堆方式 字符串处理上,走的弯路更大,但是也因此牢记了两个技巧 1. cin>>str可以用getl ...

  4. 【PAT】2021年冬季考试甲级,摸鱼游记、92分

    T1,简单模拟,20/20分 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; int a[max ...

  5. 【PAT】2021年春季PAT甲级题解

    文章目录 1. Arithmetic Progression of Primes (20 分) 题意 解法 暴力+剪枝 2. Lab Access Scheduling (25 分) 题意 解法 排序 ...

  6. PAT(甲级)2019春季考试(Python实现)

    7-1 Sexy Primes 7-1 Sexy Primes 分数 20 作者 陈越 单位 浙江大学Sexy primes are pairs of primes of the form (p, p ...

  7. 【PAT】2020年春季考试划水准备贴

    1.起因 因为之前NOIP凉了,所以算法竞赛没拿到任何加分加好感项,感觉白敲了三年代码 偶然间看到这个而且感觉挺简单,就试试三位一体有没有用,或者暑假实习,再不济反正把乙考了大学在水甲级和顶级凑一凑考 ...

  8. 【PAT】2020年春季考试乙级题目、答案、摸鱼、游记、93分

    T1 对称日 (15分) 7-1 对称日 (15分) 央视新闻发了一条微博,指出 2020 年有个罕见的"对称日",即 2020 年 2 月 2 日,按照 年年年年月月日日 格式组 ...

  9. PAT甲级线上考试备考

    我本人刷了两遍题库 之前考了两次都是四十几分,我认为目前甲级题库已经过时了 (对于有算法基础的同学来说) 前100题没有做的必要 除非是典型算法. DFS 和 回溯是相当重要的考点,如果有时间的话一定 ...

最新文章

  1. python 文字转语音
  2. nodejs系列(二)REPL交互解释 事件循环
  3. WLST - Presentation Transcript
  4. 网站优化该做好哪些细节才能更有力的吸引蜘蛛?
  5. BUU CODE REVIEW 1
  6. Java多线程之间访问实例变量
  7. java dexclassloader_DexClassLoader加载apk
  8. 全球金融中心最新排位:深圳重回前十,大连杭州飙升
  9. python数据清洗csv_Pandas 数据处理,数据清洗详解
  10. Github 是如何用 Github 撰写 Github 文档的
  11. Python强大的自有模块——标准库
  12. 一体化方案解决大数据处理的两个难题
  13. 四川信息职业技术学院计算机多媒体技术,成都市计算机多媒体技术最好学校在哪...
  14. Acid-PEG2000-Pyrene,羧基和芘丁酸修饰的PEG,HOOC-PEG2000-Pyrene
  15. OSChina 周四乱弹 —— 开个程序门诊?
  16. 还在为英语学习发愁吗?身为程序员的你可能需要这样一份“宝典”(上)...
  17. cocos creator(12)
  18. itwangyang - 再次继续卷起来-20 个 JS 封装工具函数
  19. 记一次微信小程序源码反解包
  20. windows11右下角小地球,可以正常上网,但显示无法访问internet

热门文章

  1. 解决 mac ox 终端显示bogon 的问题
  2. cassandra命令
  3. Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)
  4. ServiceStack OrmLite 数据库查询 几个实用方法 (继承表格式化集合等)
  5. 基础篇9-python基本数据结构-列表
  6. 敏捷软件开发(c#版)文摘
  7. 使用正则表达式抽取新闻/BBS网页发表时间
  8. JS字符串 window.open() window.opener window.name window对象总结
  9. 用“脸”打卡,抬头就能签到!
  10. windows7/8 安装mysql5.7