【bzoj4152】【AMPPZ2014】【The Captain】【最短路】
2015-10-27 21:41
302 查看
Description
给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用。Input
第一行包含一个正整数n(2<=n<=200000),表示点数。接下来n行,每行包含两个整数x[i],y[i](0<=x[i],y[i]<=10^9),依次表示每个点的坐标。
Output
一个整数,即最小费用。Sample Input
52 2
1 1
4 5
7 1
6 7
Sample Output
2题解:
把每个点先按横坐标排序,相邻点连边。
再把每个点按纵坐标排序,相邻点连边。
然后跑最短路即可。
代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #define N 200005 #define zff pair<long long,int> using namespace std; struct use{int x,y,kind;}p ; struct use2{int st,en;long long v;}e[N*4]; priority_queue<zff,vector<zff>,greater<zff> >q; int point ,next[N*4],cnt,n,x,y; long long dis ; bool f ; bool cmp(use a,use b){return a.x<b.x;} bool cmp2(use a,use b){return a.y<b.y;} void add(int x,int y,int v){ next[++cnt]=point[x];point[x]=cnt; e[cnt].st=x;e[cnt].en=y;e[cnt].v=(long long)v; } void spfa() { memset(f,0,sizeof(f)); memset(dis,127,sizeof(dis)); dis[1]=0;q.push(make_pair(0,1)); while (!q.empty()) { int x=q.top().second;q.pop(); if (f[x]) continue;f[x]=1; for (int i=point[x];i;i=next[i]) if (dis[e[i].en]>dis[x]+e[i].v) { dis[e[i].en]=dis[x]+e[i].v; q.push(make_pair(dis[e[i].en],e[i].en)); } } } int main(){ scanf("%d",&n); for (int i=1;i<=n;i++){scanf("%d%d",&x,&y);p[i].x=x;p[i].y=y;p[i].kind=i;} sort(p+1,p+n+1,cmp); for (int i=1;i<n;i++){ add(p[i].kind,p[i+1].kind,p[i+1].x-p[i].x); add(p[i+1].kind,p[i].kind,p[i+1].x-p[i].x); } sort(p+1,p+n+1,cmp2); for (int i=1;i<n;i++){ add(p[i].kind,p[i+1].kind,p[i+1].y-p[i].y); add(p[i+1].kind,p[i].kind,p[i+1].y-p[i].y); } spfa(); cout<<dis <<endl; }
相关文章推荐
- 打包上传报错!!ERROR ITMS-90049:"This bundle is invalid. The bundle identifier contains disallowed characte
- 03-树3 Tree Traversals Again
- 修改git已提交的的author和email
- [DEEP LEARNING An MIT Press book in preparation]Deep Learning for AI
- POJ 1995 Raising Modulo Numbers
- detailview按钮列 点击弹出窗口中使用datagrid
- jenkins自动化构建rails程序
- 003.main 主函数文件
- nonatomic, retain,weak,strong用法详解
- crsctl stat res -t 和crsctl stat res -t -init 中STATE_DETAILS的解释
- Light OJ 1038 - Race to 1 Again(概率DP)
- ubuntu: apt-get update的时候遇到“E: Some index files failed to download”错误
- /opt/linux/linux-3.5/scripts/kconfig/Makefile:21: recipe for target 'menuconfig' failed错误
- mount.nfs: mount(2): Input/output error mount.nfs: mount system call failed
- 理解TIME_WAIT
- zipimport.ZipImportError: can't decompress data; zlib not available
- 线程 wait()方法----------------------------很重要
- RTAI和EMC2在ubuntu10.04.3上的安装
- adb opendir failed ,permission denied
- AIX的用户和组管理