D. Lunar New Year and a Wander bfs+优先队列

题意

给出一个图,从1点开始走,每个点至少要经过一次(可以很多次),每次经过一个没有走过的点就把他加到走过点序列中,问最小字典序的序列是多少

思路

起始就是从每次可达的点的选取最小的那个走,拓展可达的点,然后重复直到走完了全部为止,直接用个bfs+优先队列即可

#include<bits/stdc++.h>
#include<stdlib.h>
using namespace std;
const int maxn = 3e5+5;
typedef long long ll;
#define F first
#define S second
#define pb push_back
#define pii pair<int ,int >
int a[maxn],c[maxn];
vector<int>G[maxn];
int vis[maxn]; bool cmp(int x,int y){
char num1[10],num2[10];
sprintf(num1,"%d",x);
sprintf(num2,"%d",y);
int len1=strlen(num1),len2=strlen(num2);
for(int i=0;i<min(len1,len2);i++){
if(num1[i]>num2[i]){
return 0;
}
else if(num1[i]<num2[i])return 1;
}
return len1<=len2; }
priority_queue<int,vector<int>,greater<int> >q;
void bfs(){
q.push(1);
vis[1]=1;
while(!q.empty()){
int tmp=q.top();
q.pop();
cout<<tmp<<" ";
for(int i=0;i<G[tmp].size();i++)
{
int y=G[tmp][i];
if(!vis[y]){q.push(y);vis[y]=1;}
}
}
}
int main(){
int n,m,t,d;
scanf("%d%d",&n,&m);
int x,y;
for(int i=0;i<m;i++){
scanf("%d%d",&x,&y);
G[x].pb(y);
G[y].pb(x);
} bfs(); return 0;
}

最新文章

  1. CSS3与页面布局学习总结(六)——CSS3新特性(阴影、动画、渐变、变形、伪元素等)
  2. 鼠标滑过图片变暗文字链接滑出jQuery特效
  3. Lua 协程coroutine
  4. asp.net 禁用按钮防止重复提交
  5. Android--使用Canvas绘图
  6. 洛谷P1465
  7. Delphi对于控件的SuperClassing(封装并扩展Button,使之变成TButton)
  8. Linux TCP/IP parameters reference
  9. POJ1961 KMP算法
  10. linux 日志查看总结
  11. hdu_5963_朋友(找规律)
  12. Docker入门书籍
  13. Spring Boot 参数校验
  14. 飞鱼相册笔记(1)----外置SD卡文件夹名称不区分大小写
  15. Spring MVC 使用介绍(十五)数据验证 (二)依赖注入与方法级别验证
  16. eclipse下classes文件夹无法发布到tomcat的问题--tomcat发布慢的问题
  17. IDEA常用快捷键,收藏以备后用
  18. Eclipse下高亮显示Freemarker文件
  19. JS的原生函数
  20. Windows Store Apps 开发转载

热门文章

  1. java网页日期选择框对应的星期有误
  2. PAT (Basic Level) Practice (中文)1057 数零壹 (20 分) (按行输入带空格的字符串)
  3. java - 虚拟机性能监控与故障处理工具
  4. 假期学习【六】Python网络爬虫2020.2.4
  5. centos8 ftp
  6. [Code+#4] 最短路 - 建图优化,最短路
  7. 数据升级包 - bin文件
  8. ubuntu19.04 redis启动和停止及连接
  9. C语言回文链表
  10. JDBC未知列