POJ 1847 Tram 简单最短路★
来源:互联网 发布:南大网络教学平台 编辑:程序博客网 时间:2024/05/17 01:35
读懂题意后就是一道简单的模板题。
题目大意:n个交叉点,A,B是起始点和终点,接下来输入的n行每行刚开始输入一个数字num代表和那个点相邻的点的个数,之后num个数的第一个代表可以直接到达的城市,后面num-1个要翻转一下才可以到,问你从A到B最少的翻转次数。
直接建图就好,第一个相邻的点距离是0,后面的距离是1,求最短路即为最小翻转次数,注意建图是单向的。
AC代码:
#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#define INF 0x3fffffffusing namespace std;const int maxn=10010;int first[maxn],sign;struct node{ int to,w,next;}edge[maxn*2];void creat(){ for(int i=0;i<maxn;i++) first[i]=0; sign=1;}void add_edge(int u,int v,int w){ edge[sign].w=w; edge[sign].to=v; edge[sign].next=first[u]; first[u]=sign++;}int dij(int n,int a,int b){ int dis[n+5],vis[n+5]; int nn=n-1; for(int i=0;i<=n;i++) { dis[i]=INF; vis[i]=0; } dis[a]=0; int p=a; while(nn--) { vis[p]=1; for(int k=first[p];k;k=edge[k].next) { int TO=edge[k].to; if(!vis[TO]&&dis[TO]>dis[p]+edge[k].w) dis[TO]=dis[p]+edge[k].w; } int mincost=INF; for(int i=1;i<=n;i++) { if(!vis[i]&&dis[i]<mincost) { mincost=dis[i]; p=i; } } if(mincost==INF)return -1; } return dis[b];}int main(){ int n,a,b,num,tmp; scanf("%d %d %d",&n,&a,&b); creat(); for(int i=1;i<=n;i++) { scanf("%d",&num); scanf("%d",&tmp); add_edge(i,tmp,0); for(int j=1;j<num;j++) { scanf("%d",&tmp); add_edge(i,tmp,1); } } int ans=dij(n,a,b); printf("%d\n",ans); return 0;}
0 0
- POJ 1847 Tram 简单最短路★
- POJ 1847 Tram 最短路
- POJ 1847 Tram(最短路)
- POJ - 1847Tram最短路
- poj-1847 Tram 最短路
- POJ-1847 Tram( 最短路 )
- (POJ 1847)Tram 简单最短路 spfa
- poj 1847 Tram (SPFA最短路)
- POJ 1847 Tram(floyd 最短路)
- poj-1847-Tram(最短路问题)
- POJ 1847 tram 最短路 (Flord)
- poj 1847 Tram (最短路)
- POJ 1847 Tram(最短路)
- Poj 1847 Tram ( 最短路变形
- POJ 1847 Tram --set实现最短路SPFA
- poj 1847 Tram 【最短路 dijkstra + floyd + spfa】
- POJ 1847 Tram Floyd或者spfa 最短路
- poj1847 Tram(最短路)
- Bootstrap实战--轮播图
- 蓝桥杯 历届试题 买不到的数目(数论)
- bzoj2590
- C/C++——线程池:目录
- Hadoop 2.5.2+hbase1.0.0+zookeeper 3.4.6 集群安装配置
- POJ 1847 Tram 简单最短路★
- MySQL单表数据批量复制工具
- POj 3579 Median(二分逼近)
- 利用JavaFx开发RIA桌面应用-文件拖拽
- python中匿名函数
- html页面禁止自动填充浏览器记住的密码
- 滤波器设计(3):维纳(Wiener)滤波器的设计
- jndi使用druid,在tomcat中配置druid监控
- app 被强杀后应用崩溃的解决思路