news 2026/4/26 11:52:07

UVa 125 Numbering Paths

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 125 Numbering Paths

题目描述

本题要求计算在一个由单向街道组成的城市中,从每个交叉路口到另一个交叉路口的不同路径数量。交叉路口用非负整数标识,单向街道由一对整数j jjk kk表示,代表从j jjk kk的单向街道。若两个交叉路口之间存在无穷多条路径(即存在环路),则输出− 1 -11。输入包含多个城市的数据,每个城市以街道数量开始,随后是若干对整数表示街道。每个城市的交叉路口编号从0 00到最大编号。要求输出一个矩阵,其中M [ j ] [ k ] M[j][k]M[j][k]表示从j jjk kk的路径数,若无穷多则输出− 1 -11

题目分析

本题本质上是求有向图中任意两点间的路径数量,并处理存在环路导致路径数无穷的情况。由于交叉路口数量不超过30 3030,可以使用Floyd-Warshall \texttt{Floyd-Warshall}Floyd-Warshall算法的变种来解决。

关键点在于:

  1. 初始化矩阵m a t r i x [ i ] [ j ] = 1 matrix[i][j] = 1matrix[i][j]=1若存在从i iij jj的直接边。
  2. 使用Floyd-Warshall \texttt{Floyd-Warshall}Floyd-Warshall算法累积路径数:m a t r i x [ i ] [ j ] + = m a t r i x [ i ] [ k ] × m a t r i x [ k ] [ j ] matrix[i][j] += matrix[i][k] \times matrix[k][j]matrix[i][j]+=matrix[i][k]×matrix[k][j]
  3. 若存在环路(即m a t r i x [ k ] [ k ] > 0 matrix[k][k] > 0matrix[k][k]>0),则所有经过k kk的路径数都会变成无穷大,即设置为− 1 -11

解题思路

  1. 读入数据:对于每个城市,读入街道数量,然后读入每一条街道,更新邻接矩阵,并记录最大的交叉路口编号。
  2. Floyd-Warshall \texttt{Floyd-Warshall}Floyd-Warshall算法计算路径数
    • 第一遍三重循环:对于每个中间节点k kk,更新m a t r i x [ i ] [ j ] + = m a t r i x [ i ] [ k ] × m a t r i x [ k ] [ j ] matrix[i][j] += matrix[i][k] \times matrix[k][j]matrix[i][j]+=matrix[i][k]×matrix[k][j]。这利用了动态规划的思想,计算从i iij jj经过k kk的路径数。
    • 第二遍三重循环:检查每个节点k kk是否在环上(m a t r i x [ k ] [ k ] > 0 matrix[k][k] > 0matrix[k][k]>0)。如果是,则对于所有i iij jj,若m a t r i x [ i ] [ k ] matrix[i][k]matrix[i][k]m a t r i x [ k ] [ j ] matrix[k][j]matrix[k][j]都非零,说明从i iij jj的路径可以经过该环无限次,因此m a t r i x [ i ] [ j ] = − 1 matrix[i][j] = -1matrix[i][j]=1
  3. 输出结果:按照格式输出矩阵。

时间复杂度

Floyd-Warshall \texttt{Floyd-Warshall}Floyd-Warshall算法的时间复杂度为O ( n 3 ) O(n^3)O(n3),其中n ≤ 30 n \leq 30n30,因此完全可以在规定时间内完成。

代码实现

// Numbering Paths// UVa ID: 125// Verdict: Accepted// Submission Date: 2015-11-27// UVa Run Time: 0.000s//// 版权所有(C)2015,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;#defineMAXV31intmatrix[MAXV][MAXV];intlargest;voidfloyd(){for(intk=0;k<=largest;k++)for(inti=0;i<=largest;i++)for(intj=0;j<=largest;j++)matrix[i][j]+=matrix[i][k]*matrix[k][j];for(intk=0;k<=largest;k++)if(matrix[k][k])for(inti=0;i<=largest;i++)for(intj=0;j<=largest;j++)if(matrix[i][k]&&matrix[k][j])matrix[i][j]=-1;}intmain(intac,char*av[]){intintersections;intcases=0;intstart,end;while(cin>>intersections){largest=0;memset(matrix,0,sizeof(matrix));for(inti=1;i<=intersections;i++){cin>>start>>end;matrix[start][end]=1;largest=max(largest,max(start,end));}floyd();cout<<"matrix for city "<<cases++<<endl;for(inti=0;i<=largest;i++){cout<<matrix[i][0];for(intj=1;j<=largest;j++)cout<<" "<<matrix[i][j];cout<<endl;}}return0;}

总结

本题通过Floyd-Warshall \texttt{Floyd-Warshall}Floyd-Warshall算法的变种,巧妙地解决了有向图中路径计数的问题,并处理了环路导致的无穷路径情况。代码简洁高效,适合作为图论中路径计数问题的经典例题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 15:58:01

AI艺术家的秘密武器:快速搭建物体识别辅助创作系统

AI艺术家的秘密武器&#xff1a;快速搭建物体识别辅助创作系统 作为一名数字艺术家&#xff0c;你是否曾遇到过这样的困扰&#xff1a;精心创作的画作需要手动添加元素描述&#xff0c;或者想要根据画作内容自动生成创意灵感却苦于技术门槛&#xff1f;今天我要分享的这套"…

作者头像 李华
网站建设 2026/4/21 14:56:33

AI识别万物:从理论到实践的极速入门

AI识别万物&#xff1a;从理论到实践的极速入门 物体识别是计算机视觉中最基础也最实用的技术之一&#xff0c;无论是电商平台的商品识别、医疗影像分析&#xff0c;还是自动驾驶中的障碍物检测&#xff0c;都离不开这项技术。对于刚学完机器学习理论的爱好者来说&#xff0c;最…

作者头像 李华
网站建设 2026/4/23 14:29:01

万物识别模型蒸馏:将专家知识传递给轻量模型

万物识别模型蒸馏&#xff1a;将专家知识传递给轻量模型 在移动端应用开发中&#xff0c;物体识别功能的需求日益增长&#xff0c;但大型深度学习模型往往无法满足移动设备的性能要求。本文将介绍如何通过模型蒸馏技术&#xff0c;将大模型的知识迁移到小模型中&#xff0c;实现…

作者头像 李华
网站建设 2026/4/24 18:45:41

万物识别模型压缩:让大模型在手机端流畅运行

万物识别模型压缩&#xff1a;让大模型在手机端流畅运行 作为一名移动应用开发者&#xff0c;你是否遇到过这样的困境&#xff1a;想要为应用集成先进的物体识别功能&#xff0c;却发现大型AI模型在手机端运行缓慢甚至崩溃&#xff1f;本文将带你了解如何通过模型压缩技术&…

作者头像 李华
网站建设 2026/4/25 10:40:44

一键获取!国家中小学智慧教育平台电子课本PDF下载全攻略

一键获取&#xff01;国家中小学智慧教育平台电子课本PDF下载全攻略 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 还在为在线教材无法离线使用而困扰吗&#xf…

作者头像 李华
网站建设 2026/4/16 15:48:46

Happy Island Designer:终极在线岛屿规划设计解决方案

Happy Island Designer&#xff1a;终极在线岛屿规划设计解决方案 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)"&#xff0c;是一个在线工具&#xff0c;它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Crossing)…

作者头像 李华