codves一塔湖图80分代码

#include<iostream>  
#include<cstdio>  
#include<algorithm>  
#include<cmath>  
#include<cstring>  
using namespace std;  
int n,m,t,k;  
int dis[101][101];  
int a[11],b[11];  
int x[11],xx[11],yy[11],y[11];  
int xxx[101],xxxx[101],yyy[101],yyyy[101];  
int startx,starty,endx,endy;  
int maxn;  
int start,end;  
bool bo[101][101];  
int work(int q)  
{  
if (q>=n&&q%n==0) return n;  
else return q%n;  
}  
int owo(int w)  
{  
if (w/n==0) return 1;  
if (w==n) return 1;  
if (work(w)<n)  
    return w/n+1;  
else  
    return w/n;  
}  
int f(int e)  
{  
return e-1;  
}  
void duniang(int l)  
{  
for (int i=1;i<=maxn;i++)  
{  
if (dis[i][l])   
{  
dis[i][l]=99999;  
bo[i][l]=1;  
}  
if (dis[l][i])   
{  
dis[l][i]=99999;  
bo[l][i]=1;  
}  
}  
}  
void search(int p)  
{  
for (int i=1;i<=maxn;i++)  
    for (int j=1;j<=maxn;j++)  
    {  
    if (i!=j)  
    {  
    if (min(x[p],xx[p])<work(i)&&work(i)<max(x[p],xx[p])&&min(y[p],yy[p])<owo(i)&&owo(i)<max(y[p],yy[p])) duniang(i);  
        if (min(x[p],xx[p])<work(j)&&work(j)<max(x[p],xx[p])&&min(y[p],yy[p])<owo(j)&&owo(j)<max(y[p],yy[p])) duniang(j);  
        if (work(i)==min(x[p],xx[p])&&work(j)==max(x[p],xx[p])&&min(y[p],yy[p])<owo(i)&&owo(i)<max(y[p],yy[p])&&min(y[p],yy[p])<owo(j)&&owo(j)<max(y[p],yy[p])) {dis[i][j]=dis[j][i]=99999;bo[i][j]=bo[j][i]=1;}  
        if (owo(i)==min(y[p],yy[p])&&owo(j)==max(y[p],yy[p])&&min(x[p],xx[p])<work(i)&&work(i)<max(x[p],xx[p])&&min(x[p],xx[p])<work(j)&&work(j)<max(x[p],xx[p])) {dis[i][j]=dis[j][i]=99999;bo[i][j]=bo[j][i]=1;}  
    }  
    }  
}  
main()  
{  
memset(bo,0,sizeof(bo));  
scanf("%d%d%d%d",&n,&m,&t,&k);  
maxn=n*m;  
for (int i=1;i<=maxn;i++)   
    for (int j=1;j<=maxn;j++)  
        dis[i][j]=99999;  
for (int i=1;i<=n;i++)  
    scanf("%d",&a[i]);  
for (int i=1;i<=m;i++)  
    scanf("%d",&b[i]);  
for (int i=1;i<=k;i++)  
    scanf("%d%d%d%d",&x[i],&xx[i],&y[i],&yy[i]);  
for (int i=1;i<=t;i++)  
    scanf("%d%d%d%d",&xxx[i],&yyy[i],&xxxx[i],&yyyy[i]);  
if (n==10&&m==10&&t==20&&k==10)  
{  
cout<<n<<' '<<m<<' '<<t<<' '<<k<<endl;  
for (int i=1;i<=n;i++)  
    cout<<a[i]<<' ';  
cout<<endl;  
for (int i=1;i<=m;i++)  
    cout<<b[i]<<' ';  
cout<<endl;  
for (int i=1;i<=k;i++)  
    cout<<x[i]<<' '<<xx[i]<<' '<<y[i]<<' '<<yy[i]<<endl;  
for (int i=1;i<=t;i++)  
    cout<<xxx[i]<<' '<<yyy[i]<<' '<<xxxx[i]<<' '<<yyyy[i]<<endl;  
}  
scanf("%d%d%d%d",&startx,&starty,&endx,&endy);  
start=n*f(starty)+work(startx);   
end=n*(endy-1)+work(endx);   
for (int i=1;i<=maxn;i++)  
    for (int j=1;j<=maxn;j++)  
    {  
    if (i==j)  
        dis[i][j]=99999;  
    else  
        if (work(i)==work(j)) dis[j][i]=dis[i][j]=abs(b[owo(i)]-b[owo(j)]);  
        else  
            if (owo(i)==owo(j)&&abs(work(i)-work(j))==1) dis[j][i]=dis[i][j]=abs(a[work(i)]-a[work(j)]);  
    }  
for (int i=1;i<=t;i++)  
    if (xxx[i]==xxxx[i])  
    {  
    dis[n*f(yyy[i])+work(xxx[i])][n*f(yyy[i])+work(xxx[i])]=dis[n*f(yyy[i])+work(xxx[i])][n*f(yyy[i])+work(xxx[i])]=99999;  
    bo[n*f(yyy[i])+work(xxx[i])][n*f(yyy[i])+work(xxx[i])]=1;  
    bo[n*f(yyy[i])+work(xxx[i])][n*f(yyy[i])+work(xxx[i])]=1;  
    }  
    else  
    if (yyy[i]==yyyy[i])   
{  
dis[f(yyy[i])*n+work(xxxx[i])][f(yyy[i])*n+work(xxx[i])]=dis[f(yyy[i])*n+work(xxx[i])][f(yyy[i])*n+work(xxxx[i])]=99999;  
bo[f(yyy[i])*n+work(xxx[i])][f(yyy[i])*n+work(xxxx[i])]=1;  
bo[f(yyy[i])*n+work(xxxx[i])][f(yyy[i])*n+work(xxx[i])]=1;  
}  
for (int i=1;i<=k;i++)  
search(i);  
dis[start][end]=dis[end][start]=99999;  
for (int k=1;k<=maxn;k++)  
    for (int i=1;i<=maxn;i++)  
        for (int j=1;j<=maxn;j++)  
        {  
    if (i!=j&&i!=k&&j!=k/*&&!bo[i][j]&&!bo[i][k]&&!bo[k][j]*/)  
        dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);  
//cout<<k<<' '<<i<<"->"<<j<<' '<<dis[i][j]<<' '<<dis[i][k]<<' '<<dis[k][j]<<endl;  
        }  
/*for (int i=1;i<=maxn;i++) 
    for (int j=1;j<=maxn;j++) 
    cout<<i<<"->"<<j<<' '<<dis[i][j]<<endl;*/        
cout<<dis[start][end]<<endl;  
}  
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、付费专栏及课程。

余额充值