社区讨论

为什么不能用memset

P1346电车参与者 5已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m3mtk50g
此快照首次捕获于
2024/11/18 17:24
去年
此快照最后确认于
2025/11/04 14:28
4 个月前
查看原帖
我不用memset,自己赋值,答案没问题:但用了memset就全错,洛谷显示我每个答案前都有负号
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=110,inf=1e9+10,INF=0x7f7f7f7f;
int mp[N][N],n,a,b,k;
bool vis[N][N];
int main(){
	cin>>n>>a>>b;
	int v;
	//memset(mp,INF,sizeof(mp));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			mp[i][j]=inf;
			mp[i][i]=0;
		}
	for(int i=1;i<=n;i++){
		cin>>k;
		for(int j=1;j<=k;j++){
			cin>>v;
			mp[i][v] = (j==1) ? 0 : 1;
			//vis[i][v] = true;
		}
	}
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(mp[i][j]>mp[i][k]+mp[k][j] && i!=k && i!=j && j!=k){
					mp[i][j]=mp[i][k]+mp[k][j];
					//vis[i][j] = true;
				}
	if(mp[a][b]==inf) cout<<-1<<"\n";
	else cout<<mp[a][b]<<"\n";
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...