Ideal Path UVA - 1599 邻接表 双向BFS

无向图的邻接矩阵表示 立即下载

思路 :紫书上的思路,先从终点反向BFS找出每一个点到终点的最短距离,然后正向BFS 一个循环内套两个循环,第一个循环找出最小的颜色,第二个循环把符合条件的点放入类似队列的数组(vector)然后一直搜 就能找出来了



#include<bits/stdc++.h>
using namespace std;
const int maxn=100000+10;

struct Edge{
int u,v,c;
Edge(int a=0,int b=0,int c=0):u(a),v(b),c(c){}
};
vector<Edge>edges;   //用邻接表存图
vector <int>G[maxn];
void Add_edges(int u,int v,int c){
edges.push_back(Edge(u,v,c));
int index=edges.size()-1;
G[u].push_back(index);
}

int vis[maxn];
int d[maxn];
int n;



void rev_bfs(){
    memset(vis,0,sizeof(vis));  //第一次BFS 找出每个点到终点的最小距离
d[n-1]=0;
queue<int>q;
q.push(n-1);
vis[n-1]=1;
while(!q.empty()){
    int temp=q.front();
    q.pop();
    for(int i=0;i<G[temp].size();i++){
       int e=G[temp][i];
       int u=edges[e].v;
       if(!vis[u]){
        vis[u]=1;
        d[u]=d[temp]+1;
        q.push(u);
       }
    }
 }
}



vector<int>ans;

void bfs(){  //第二次BFS
memset(vis,0,sizeof(vis));
vis[0]=1;
ans.clear();

vector<int>next;
next.push_back(0);
for(int i=0;i<d[0];i++){  //一共d[0]步,所以循环d[0]次
    int min_color=INT_MAX;
    for(int j=0;j<next.size();j++){  //找出最小的颜色  其中next会在下面的循环更新
        int u=next[j];
        for(int k=0;k<G[u].size();k++){
            int e=G[u][k];
            int v=edges[e].v;
            if(d[u]==d[v]+1){
                min_color=min(min_color,edges[e].c);
            }
        }
    }
    ans.push_back(min_color);  //把最小的颜色存起来

    vector<int>next2;
    for(int j=0;j<next.size();j++){
        int u=next[j];
        for(int k=0;k<G[u].size();k++){
             int e=G[u][k];
            int v=edges[e].v;
            if(d[u]==d[v]+1&&edges[e].c==min_color&&!vis[v]){
                vis[v]=1;
                next2.push_back(v);   //把符合条件的点存起来
            }
        }
    }
    next=next2;//把符合最小颜色的点的数组更新上一个next数组实现bfs

}


printf("%d\n",ans.size());
printf("%d",ans[0]);
for(int i=1;i<ans.size();i++){
    printf(" %d",ans[i]);

}
printf("\n");


}




int main(){
int u,v,c,m;
while(scanf("%d%d",&n,&m)==2){
   for(int i=0;i<n;i++)G[i].clear();
   while(m--){
    scanf("%d%d%d",&u,&v,&c);
    Add_edges(u-1,v-1,c);
    Add_edges(v-1,u-1,c);
   }
   rev_bfs();
   bfs();

}
return 0;

}

无向图的建立和邻接矩阵的输出 无向图的建立程序及邻接矩阵的储存及建立输出 立即下载

相关推荐

CARLA 0.9.15从零开始:环境搭建与基础场景实战指南

本文是CARLA 0.9.15从零开始的完整环境搭建与基础运行教程。详细介绍了在Linux系统下配置Python环境、下载安装CARLA核心软件包、启动服务器以及运行第一个基础场景的步骤。重点演示了如何通过Python客户端脚本生成随机车流,并手动控制EGO车辆在仿真城市中行驶,为自动驾驶算法开发构建了坚实的仿真测试基础。

weixin_29053383的博客 777

3.双向邻接边表

计算几何,双向邻接边表

x13262608581的博客 809

凌欧通用FOC框架解析(5.程序环流程)

结构体:电流内环.这是一个结构体函数占空比13.

weixin_43756295的博客 2930

图论相关题-pta-个人整理-含有解析

fill:#333;color:#333;color:#333;fill:none;}表示邻接矩阵邻接表结构体动态数组***7-1 邻接矩阵表示法创建无向图分数 20作者 王东单位 贵州师范学院采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度。输入格式:输入第一行中给出2个整数i(0

firgk的博客 2733

用Pixhawk 2.4.8和PX4 1.13,从零搭建你的第一支无人机编队(附避坑清单)

本文详细介绍了如何使用Pixhawk 2.4.8飞控和PX4 1.13固件从零搭建低成本无人机编队系统。涵盖硬件选型、固件配置、多机通信和编队飞行逻辑开发的全流程,特别针对学生和爱好者提供实战验证的避坑方案,帮助实现多机协同飞行。

weixin_27219587的博客 402

SAP 物料的分割评估

SAP 物料的分割评估 前言 本文主要讲解SAP中物料的分割评估,通过分割评估来区分出同一物料不同来源下的核算方式。例如:同一物料分为自产或者采购,或者同一物料分为进口或者国内采购等。 一、概述 分割评估一般用于以下场景: 1、物料分为内部采购和外部采购; 2、物料分属于进口或者国内采购; 3、物料分属于不同的批次; 4、物料分为自制或者采购。 由于物料的来源不同可能导致物料的价格或者性质不同,需要用不同价格来区分出 二、配置步骤 1.激活分割评估 ...

五谷散熊 6791

PTA 7-1 邻接矩阵表示法创建无向图 (20分)

PTA 7-1 邻接矩阵表示法创建无向图 (20分) 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度。 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。 输入第二行为顶点的信息,每个顶点只能用一个字符表示。 依次输入j行,每行输入一条边依附的顶点。 输出格式: 依次输出各顶点的度,行末没有最后的空格。 输入样例: 5 7 ABCDE AB AD BC BE CD CE DE 输出样例: 2 3 3 3 3 一道水题,无需建图也能AC 【程序实现

p1967914901的博客 1万+

华为数通方向HCIP-DataCom H12-831题库(多选题:121-140)

华为数通HCIP H12-831多选题

didiplus 1291

pta_邻接表创建无向图

即无向图邻接表的建立

Bouquet_zxx的博客 1050

矿石生成(1)

这个提供了标准化的矿石放置配置模板简化了常见和稀有矿石的配置过程遵循了Minecraft原版的世界生成模式提高了代码的可读性和可维护性通过使用这个类,模组开发者可以更轻松地配置矿石的生成规则,而不需要每次都手动编写完整的放置修饰符列表。这种设计模式在原版Minecraft和其他大型模组中也很常见,是一种良好的编程实践。// 导入语句...// 字段和方法...包声明表明这个类位于luckymod模组的WorldGen包中,专门处理世界生成相关配置。导入语句。

qq_24992377的博客 136

GEE:面对对象土地利用分类(结合SNIC、GLCM 和机器学习算法)

本文将介绍在Google Earth Engine中结合SNIC、GLCM和机器学习算法的的土地利用/土地覆盖(LULC)分类方法。结果如下图所示,

养乐多的博客 5614

7-1 邻接矩阵表示法创建无向图

采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度。

dwjg123的博客 804

【ComfyUI】Flux + ControlNet 边缘搭配深度、瓷砖、姿态引导图生图

本文介绍了一个基于 Wan 2.1 的 ComfyUI 文生视频工作流,通过 UNet、CLIP 和 VAE 三个核心模型,将文本提示转化为动态视频。工作流包含模型加载、提示词解析、潜空间采样等7个环节,支持分辨率、帧数等参数设置,最终输出高质量视频文件。该方案适用于创意设计、教育培训和多媒体制作等场景,能快速生成符合语义的动态内容。文章还提供了相关开发资源和学习链接,适合AI视频生成领域的研究者和实践者参考。

Mr数据杨 1632

例题6-20 UVA1599 Ideal Path(67行AC代码)

紫书刷题进行中,题解系列【GitHub|优快云】 例题6-20 UVA1599 Ideal Path(67行AC代码) 题目大意 给定一个n个顶点,m条边的无向图,每条边有颜色值(长度均为1),求出起点到终点的最短路径(颜色值表示),若存在多解,则输出路径中颜色值字典序最小者。(注意重边,自环) 思路分析 本题有两个条件:最短+字典序最小 最短路用bfs可轻易解决,但字典序稍微棘手些,不过我们可...

努力做个书呆儿 411

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

UVA 1599 Ideal Path【双向bfs+非简单图的最短路】

Ideal Path  UVA - 1599  思路: 从终点开始倒着bfs一次,得到每个点到终点的距离,然后从起点开始,按照每次距离减1的方法寻找接下来的点的编号。按照颜色最小的走,如果有多个颜色最小,则都拉入队列中,将最小的颜色记录在res数组中。 细节: 已经进入队列的节点不能重复入队,否则复杂度太高,会tle(重复入队的

Puya的博客 455

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

UVA1599IdealPath

本题的关键之处在于算法的实现。数据很大,用一般情况下的bfs,TLE是在所难免的。因此需要尽量模拟人选择路径的方式,而非暴力遍历所有的点。即,将与每一个顶点相连的边收集起来,在使用bfs时仅从这些边里抽取,大大节省了时间的消耗。 利用此算法时,同样需要注意逆向记录距离(同时便将符合的最小路径记录下来),然后从出发点再次bfs,而此时,每次只找距离减一的点,即最短路径必经之路。 多亏了lrj老师的巧妙设计。限时5s的题只需要0.1几秒就能AC了。

qq_16603365的博客 267

UVA-1599-Ideal-Path-BFS-最短路径-队列

UVA-1599-Ideal-Path参考题解,涉及数据结构为队列、无向图,参考算法为BFS。本文采用一次BFS解决,另外可用2次BFS(一反一正)解决。

我是懒狗━┳━ ━┳━ 1440

UVA 1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)

https://vjudge.net/problem/UVA-1599 给一个n个点m条边(2<=n<=100000,1<=m<=200000)的无向图,每条边上都涂有一种颜色。求从结点1到结点n的一条路径,使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小。一对结点可能有多条边,一条边可能连接相同的结点(自环)。输入保证结点1可以到达结点n。颜色是...

135

UVA-1599 Ideal Path(双向BFS)

题目: 给一个n个点m条边(2≤m≤100000, 1≤m≤200000)的无向图,每条边上都涂有一种颜色(用1到1000000000表示)。求从结点1到结点n的一条路径, 使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小。一对结点间可能有多条边,一条边可能连接两个相同结点。输入保证结点1可以 到达结点n。 思路: 看到边数尽量少,颜色序列字典序最小,知道这是用BFS来做这...

weixin_30662011的博客 117

【UVA1599】Ideal Path理想路径--两种约束条件(!!双向bfs+非简单图的最短路+无向图邻接记录法)

题目:https://vjudge.net/problem/UVA-1599 解题思路: 为什么不能只用正向的bfs呢? 因为这道题是要使路径上color的字典序最小,所以最终路径上从顶点1出发的这条边的color一定是与顶点1相连的所有边color中的最小值,但是很有可能选择这条最小color边后无法到达终点,如下图: 双向bfs怎么用? 1.先从终点n出发,反向bfs,一旦在遍历...

Cassie_zkq的博客 675

【双向bfs(一次可也)】【非简单图的最短路】UVa1599 Ideal Path 【紫书6-20经典例题】【无向图求字典序最小的最短路】

【双向bfs(一次也可)】【非简单图的最短路】UVa1599 Ideal Path 【紫书6-20经典例题】【无向图求字典序最小的最短路】 New labyrinth attraction is open in New Lostland amusement park. The labyrinth consists of n rooms connected by m passages. Each ...

Floraqiu的博客 939

Ideal Path UVA - 1599

题目链接:https://vjudge.net/problem/UVA-1599题目分析: 根据题目描述,给出的边可能会出现自环和两个节点之间有多条边的情况我最初的想法是,在存储两条边的同时我先把他们记录下来,记录的同时比较两个节点之间颜色的最小值,只记录最小的然后我再把他们存到邻接表中,这样我就保证了两个节点之间只有一条边,之后我再开始dfs,在dfs的过程中,要注意剪枝来减少运算,想到这些,我...

∑bit 250

Uva - 1599 - Ideal Path

先倒着BFS,找到每个结点i到重点最短距离d[i],然后直接起点开始BFS,如果有多种走法,选颜色字典序最小的走。 AC代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cctype> #include <c...

anpi3191的博客 211

UVa1599 Ideal Path (双向BFS求最短路+打印路径)

题目链接 New labyrinth attraction is open in New Lostland amusement park. The labyrinth consists of n rooms connected by m passages. Each passage is colored into some color ci. Visitors of the labyrinth a...

Happig的博客 308

UVa1599 Ideal Path (两个bfs+最短路+字典序)

New labyrinth attraction is open in New Lostland amusement park. The labyrinth consists of n rooms connected by m passages. Each passage is colored into some color ci. Visitors of the labyrinth are dr...

pxlsdz的博客 325

UVa1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)

题目大意: 对于一个n个房间m条路径的迷宫(Labyrinth)(2<=n<=100000, 1<=m<=200000),每条路径上都涂有颜色,颜色取值范围为1<=c<=10^9。求从节点1到节点n的一条路径,使得经过的边尽量少,在这样的前提下,如果有多条路径边数均为最小,则颜色的字典序最小的路径获胜。一条路径可能连接两个相同的房间,一对房间之间可能有多条路径...

weixin_34006965的博客 154
上一篇: Self-Assembly UVA - 1572 拓扑排序
下一篇: Mobile Computing UVA - 1354
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值