BZOJ 4152: [AMPPZ2014]The Captain Dijkstra+贪心

Code: 

#include <queue>
#include <cstdio> 
#include <cstring>    
#include <algorithm>  
#define N 400005   
#define ll long long  
#define setIO(s) freopen(s".in","r",stdin)   
using namespace std; 
ll d[N];    
int n,edges; 
int hd[N],to[N<<1],nex[N<<1],val[N<<1],done[N];    
void addedge(int u,int v,int c) 
{ 
    nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;  
    swap(u,v);  
    nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;  
}
struct Point
{
    int x,y,id; 
}e[N];  
bool cmpx(Point a,Point b) 
{
    return a.x<b.x; 
} 
bool cmpy(Point a,Point b) 
{
    return a.y<b.y;    
}
struct Node
{
    int u; 
    ll dis; 
    Node(int u=0,ll dis=0):u(u),dis(dis){}  
    bool operator<(Node b) const 
    {
        return b.dis<dis;     
    } 
}; 
priority_queue<Node>q;   
void Dijkstra() 
{
    int s=1; 
    memset(d,0x3f,sizeof(d));   
    for(d[s]=0,q.push(Node(s,0));!q.empty();) 
    {
        Node e=q.top(); q.pop(); 
        int u=e.u,i,v;  
        if(done[u]) continue;  
        done[u]=1;  
        for(i=hd[u];i;i=nex[i]) 
        { 
            v=to[i]; 
            if(d[v]>d[u]+val[i]) 
            { 
                d[v]=d[u]+val[i];   
                q.push(Node(v,d[v]));    
            }
        }
    }
}
int main() 
{ 
    int i,j,k; 
    // setIO("input"); 
    scanf("%d",&n);  
    for(i=1;i<=n;++i) 
    {
        int x,y; 
        scanf("%d%d",&e[i].x,&e[i].y), e[i].id=i;      
    }
    sort(e+1,e+1+n,cmpx); 
    for(i=2;i<=n;++i)   
        addedge(e[i-1].id,e[i].id,e[i].x-e[i-1].x);          
    sort(e+1,e+1+n,cmpy); 
    for(i=2;i<=n;++i) 
    {
        addedge(e[i-1].id,e[i].id,e[i].y-e[i-1].y); 
    }
    Dijkstra();   
    printf("%lld\n",d[n]);  
    return 0;    
}

  

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值