社区讨论

90分求救!

P4306[JSOI2010] 连通数参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@lo26gfh5
此快照首次捕获于
2023/10/23 08:46
2 年前
此快照最后确认于
2023/11/03 09:02
2 年前
查看原帖
实在不知道哪里错了
CPP
#include <bits/stdc++.h>
using namespace std;
#define ll long long

bool yb[2001][2001];
string tem;
ll n,yjs[2001];

inline ll ss2 (int a,int b)
//当构成图时(即回到原点),退出,防止循环
{
	if(a==b) return 0;
	if(yjs[a]) return yjs[a];
	ll ans=0;
	
	for(int i=1;i<=n;i++)
	if(yb[a][i])
	 //ans=ans+1+ss2(i,b);
	 ans++;
	
	return yjs[a]=ans;
	
}

inline ll ss (int a)
{
	if(yjs[a])
	 return yjs[a];
	ll ans=0;
	
	for(int i=1;i<=n;++i)
		if(yb[a][i])
		ans=ans+1+ss2(i,a);
	
	return yjs[a]=ans;
}
int main ()
{
	cin>>n;
	for(int i=1;i<=n;++i)
	{
	 	cin>>tem;
	 	for(int j=1;j<=n;++j)
	 	 yb[i][j]=tem[j-1];
	}
	cout<<ss(1);
	return 0;
}

回复

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

正在加载回复...