zzzjh112233 2021-11-26 01:26 采纳率: 0%
浏览 105

关于pta喊山的问题,来看看代码,部分正确,有段错误😭

img

img

img

img

#include <stdio.h>
int main()
{
int n,m,k,i,j,p,f;
int v1,v2;
scanf("%d%d%d",&n,&m,&k);
int b[n+2][n+2];//邻接矩阵
int a[k+2];//存储要查询的山头
int c[n+2]; //传输的距离
int d[n+2];//队列
int e[n+2];//用来标记是否访问过
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
b[i][j]=0;
}
}
for(i=1;i<=n;i++)
{
c[i]=0;
e[i]=0;
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&v1,&v2);
b[v1][v2]=1;
b[v2][v1]=1;
}
for(i=1;i<=k;i++)
{
scanf("%d",&a[i]);
}
int t,flag,z=-1,x,y;
for(i=1;i<=k;i++)
{
flag=0;
z=-1;
int front=0,rear=0;
d[rear++]=a[i];
x=0,y=0;
e[a[i]]=1;
while(1)
{
t=d[front++];
for(j=1;j<=n;j++)
{
if(b[t][j]!=0&&e[j]==0)
{
flag=1;
c[j]=x+1;
d[rear++]=j;
e[j]=1;
y=c[j];
}
}
if(flag==1)
{
x=y;
}
flag=0;
if(front==rear)
break;
}
int max=0;
for(p=1;p<=n;p++)
{
if(c[p]>max)
{
x=p;
max=c[p];
}
}
if(max!=0)
printf("%d\n",x);
else
printf("%d\n",0);
for(f=1;f<=n;f++)
{
c[f]=0;
e[f]=0;
}
}
}

  • 写回答

2条回答 默认 最新

  • 关注

    对于你这个题目可以参考如下链接:

    如果对你有帮助,可以给我个采纳吗,谢谢!!

    评论

报告相同问题?

问题事件

  • 创建了问题 11月26日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?