洛谷 P1346 电车
2018-09-05 07:42:36来源:博客园 阅读 ()
这道题的关键在建图
把每一个车站看成一个点,将这个车站相连的第一个车站建立一条边权为0的边,对于它所相连的其他车站,建立边权为1的边;
这样我们可以得到一张图;
起点,终点都知道了,跑一边最短路即可
最短路可以用spfa,floyd,迪杰斯特拉;
因为n只有200,跑遍floyd就行;
但是还有一个小细节;
对于我们建的每一条边,都只是单向边,不要加上f【i】【j】=f【j】【i】;
附ac代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<string> 6 #include<queue> 7 #include<cmath> 8 #include<ctime> 9 const int MAXN=100+5; 10 const int INF=0x3f3f3f; 11 int dis[MAXN][MAXN]; 12 int main() 13 { 14 int n,a,b; 15 int c,d; 16 scanf("%d %d %d",&n,&a,&b); 17 for(int i=1;i<=MAXN-2;i++) 18 for(int j=1;j<=MAXN-2;j++) 19 dis[i][j]=INF; 20 for(int i=1;i<=n;i++) 21 { 22 scanf("%d",&c); 23 for(int j=1;j<=c;j++) 24 { 25 scanf("%d",&d); 26 j==1?dis[i][d]=0:dis[i][d]=1; 27 } 28 } 29 30 for(int k=1;k<=n;k++) 31 for(int i=1;i<=n;i++) 32 for(int j=1;j<=n;j++) 33 dis[i][j]=std::min(dis[i][j],dis[i][k]+dis[k][j]); 34 dis[a][b]==INF?printf("-1"):printf("%d",dis[a][b]); 35 36 return 0; 37 38 }
更多代码请进入:https://github.com/tomatoschool
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 洛谷P1164->小A点菜 2020-05-18
- 洛谷P1907口算练习题 2020-03-24
- 结题报告--P5551洛谷--Chino的树学 2020-03-13
- 结题报告--洛谷P3915 2020-03-13
- 洛谷P1034 矩形覆盖 2020-03-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash