邮递员的烦恼 解题报告

邮递员的烦恼

原文链接请添加图片描述

#include
#define ll int
#define fd(i, a, b) for (ll i = a; i >= b; i--)
#define r(i, a) for (ll i = fir[a]; i; i = e[i].nex)
#define file(a) freopen(#a ".in", "r", stdin);freopen(#a ".out", "w", stdout);
#define il inline
#define gc getchar()
#define f(i,a,b) for(ll i=a;i<=b;i++)
using namespace std;
const ll maxn=6e2+10,INF=1e16;
ll n,X[maxn],Y[maxn],nx,ny,Cnt,fir[maxn*maxn<<1];
ll cx,cy;
il ll number(ll x,ll y){return (x-1)*cy+y;}
il ll read(){ll x=0,f=1;char ch=gc;while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=gc;}while(ch>='0'&&ch<='9') x=(x*10)+(ch^48),ch=gc;return x*f;
}
struct node{ll x,y;}p[maxn];
struct edge{ll to,nex,w;}e[maxn*maxn<<1];
il void add(ll a,ll b,ll c){e[++Cnt].to=b,e[Cnt].nex=fir[a],e[Cnt].w=c;fir[a]=Cnt;
}
ll xa[5]={0,0,0,1,-1};
ll ya[5]={0,1,-1,0,0};
ll wx[maxn],wy[maxn];
ll yx[maxn],yy[maxn];
bool g[maxn*maxn];
il bool pd(ll x,ll y){return (x>0&&x<=cx&&y>0&&y<=cy);}
il ll far(ll x1,ll y1,ll x2,ll y2){return abs(wx[x1]-wx[x2])+abs(wy[y1]-wy[y2]);}
il void Add(ll x,ll y){ll num=number(x,y);f(i,1,4){ll vx=x+xa[i],vy=y+ya[i];if(!pd(vx,vy)) continue;ll c=far(x,y,vx,vy);ll k=number(vx,vy);add(num,k,c);add(k,num,c);}
}
priority_queue >q;
ll dis[maxn*maxn],inf;
il void dijkstra(ll x){memset(dis,0x7f,sizeof(dis));inf=dis[0];dis[x]=0;// cout<


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部