Tram
Tram
题目大意:给你一个图,这个图上有n点和边。点上有开关,开关开始指向一条道路,拨动开关可以使开关指向由开关出发的任意一条路径,读入,a,b,求,至少要拨动几次才能从a点走到b点。
注释:n<=100.
想法:最短路的题,由于n的范围,想采用floyd来处理。首先,说一下读入的方式:第一行3个整数n,a,b,接下来的n行,第i+1行的第一个数表示第i个点出发的有几条边,数据保证每条边会在两个点的读入中出现,而开关默认指向的方向就是所读进来的第二个数,也就是读进来的第一条边。这道题的正解就是强行为边附上边权。如果以这个点出发且开关直接指向这条边就把这条边的边权设为0,如果开关并不指向这条边,但这条边是一条轨道,我们就将这条边的边权设为1。这样,用floyd跑最短路,最后输出map[a][b]即可。
最后,附上丑陋的代码... ...
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int map[][];//所记录的边权,以及两点之间的最短路
int main()
{
int n,a,b;
int m,x;
while(~scanf("%d%d%d",&n,&a,&b))
{
memset(map,0x3f,sizeof(map));//每组数据开始前都必须将map数组清零
for(int i=;i<=n;i++) map[i][i]=;//特判掉a==b的情况
for(int i=;i<=n;i++)//读入所有的轨道
{
scanf("%d",&m);
for(int j=;j<=m;j++)
{
scanf("%d",&x);
if(j==) map[i][x]=;
else map[i][x]=;
}
}
for(int k=;k<=n;++k)//floyd
{
for(int i=;i<=n;++i)
{
for(int j=;j<=n;j++)
{
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
}
}
}
if(map[a][b]==0x3f3f3f3f) printf("-1\n");//如果不行则输出-1
else printf("%d\n",map[a][b]);
}
return ;
}
小结,错误:无。
Tram的更多相关文章
- [最短路径SPFA] POJ 1847 Tram
Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14630 Accepted: 5397 Description Tra ...
- POJ 1847 Tram (最短路)
Tram 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/N Description Tram network in Zagreb ...
- poj 1847 Tram【spfa最短路】
Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12005 Accepted: 4365 Description ...
- (简单) POJ 1847 Tram,Dijkstra。
Description Tram network in Zagreb consists of a number of intersections and rails connecting some o ...
- Codeforces Round #386 (Div. 2) C. Tram
C. Tram time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- POJ1847 Tram
Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 20274 Accepted: 7553 Description ...
- poj1847 Tram(最短路dijkstra)
描述: Tram network in Zagreb consists of a number of intersections and rails connecting some of them. ...
- POJ 1847 Tram (最短路径)
POJ 1847 Tram (最短路径) Description Tram network in Zagreb consists of a number of intersections and ra ...
- POJ1847:Tram(最短路)
Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 20116 Accepted: 7491 题目链接:http:/ ...
随机推荐
- Linux显示所有输出域自动缩小到最短三数字单元和显示单元的打印
Linux显示所有输出域自动缩小到最短三数字单元和显示单元的打印 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -h total used free ...
- js、css动态压缩页面代码
1.js.css动态压缩页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...
- eclipse:An internal error occurred during: "Build Project". GC overhead limit exceeded
在使用Eclipse的Build Project功能时,提示以下错误: An internal error occurred during: "Build Project". GC ...
- freemarker之include指令(九)
freemarker之include指令 1.父页面ftl <html> <head> <meta http-equiv="content-type" ...
- 从零一起学Spring Boot之LayIM项目长成记(六)单聊群聊的实现
文章传送门: https://my.oschina.net/panzi1/blog/1577007 并没有放弃博客园,只是 t-io 在 oschina发展.用了人家的框架,也得帮人家做做宣传是吧~~
- javscript eval()的优缺点与web安全防范
要说JavaScript中最为强大的一个方法便是eval()方法呢,为何如此说呢?因为它就像是一个JavaScript解析器,也就是说它的参数就是一段js代码所构成的字符串,当执行这个函数的时候,会把 ...
- 总结各类错误(always online)
最近发现打暴力(还有梦想中的正解)都会打错,决定好好总结一下各种坑比错误QAQ 1.一定要好好看数据范围,接近int类型上限,如果要求和,一定要开long long并且改大你的inf值(TAT暴力分流 ...
- NTT中可用素数模数原根表
常用素数: P = 1004535809 ====> pr = 3 P = 998244353 =====> pr = 3 //(g 是mod(r*2^k+1)的原根) 素数 r k g ...
- 很简单的Java断点续传实现原理
原理解析 在开发当中,"断点续传"这种功能很实用和常见,听上去也是比较有"逼格"的感觉.所以通常我们都有兴趣去研究研究这种功能是如何实现的? 以Java来说,网 ...
- 华为/华三交换机snmp配置
snmp-agent /使能snmp服务/snmp-agent local-engineid 000007DB7F000001000049DD /系统自 ...