小疑问,玄关
  • 板块灌水区
  • 楼主Tsumiki_Mikan
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/18 23:20
  • 上次更新2023/11/3 02:46:54
查看原帖
小疑问,玄关
611170
Tsumiki_Mikan楼主2023/8/18 23:20

一段丑陋的代码

#include<bits/stdc++.h>
using namespace std;
long long i,j,k,mi,n,m,a[2005][2005],p,f[2005],dis[2005],l1,l2,l3;
long long l[2005];
int sb(int l,int r){
	memset(a,127/3,sizeof(a));
	dis[l]=0;
	memset(f,0,sizeof(f));
	for(i=1;i<=n;i++){
		k=0,mi=INT_MAX/3;
		for(j=1;j<=n;j++){
			if(f[j]==0&&dis[j]<mi){
				mi=dis[j];
				k=j;
			}
		}
		f[k]=1;
		for(j=1;j<=n;j++){
			if(a[k][j]+dis[k]<dis[j]) dis[j]=a[k][j]+dis[k];
		}
	}
	return dis[r];
}
int main(){
	cin>>n>>m;
	memset(a,127/3,sizeof(a));
	for(i=1;i<=m;i++){
		cin>>l1>>l2;
		a[l1][l2]=a[l2][l1]=1;
	}
	cin>>p;
	for(i=1;i<=p;i++){
		cin>>l1>>l2;
		int sum=0;
		l3=sb(l1,l2);
		for(int x=1;x<=n;x++){
			if(sb(x,l1)+sb(x,l2)==l3) sum++;
		}
		cout<<sum<<endl;
	}
}

但是输入p之后i只转了一次...在子函数里第一个for里的i加上了一个int之后主函数最下面的i就能转p次了...但是输出的答案全错了...有没有大佬解释一下(做不完这道题爸妈不让我去睡但是蒟蒻我根本不会只能骗分)

2023/8/18 23:20
加载中...