Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
1.3 kB
2
Indexable
Never
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};

bool val(int n, int i, int j, vector<vector<ll>> v)
{
	if(i<0||j<0||i>=n||j>=n||v[i][j]==-1)
		return false;
	return true;
}

void dfs(int i, int j, vector<vector<ll>> v, vector<vector<ll>> &cc,int k)
{
	cc[i][j]=k;
	for(int x=0;x<4;x++)
	{
		if(val((int)v.size(),i+dx[x],j+dy[x],v) && cc[i+dx[x]][j+dy[x]]!=k)
		{
			dfs(i+dx[x],j+dy[x],v,cc,k);
		}
	}
}

int main() {
	// your code goes here
	int n;
	cin>>n;
	vector<vector<ll>> v(n,vector<ll> (n)),cc(n,vector<ll> (n,0));
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>v[i][j];
		}
	}
	int k=1;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(val(n,i,j,v) && cc[i][j]==0)
			{
				dfs(i,j,v,cc,k);
				k++;
			}
		}
	}
	/*vector<set<ll>> f(1e6+10,0);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			f[v[i][j]].insert(cc[i][j]);
		}
	}*/
	int ans=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			//cout<<ans<<" ";
			int x=v[i][j];
			if(x==-1)
			{
				ans--;
				continue;
			}
			for(int ii=0;ii<n;ii++)
			{
				for(int jj=0;jj<n;jj++)
				{
					if(v[ii][jj]==-1)
						continue;
					if(cc[ii][jj]!=cc[i][j] && v[ii][jj]%x==0)
					{
						ans+=v[ii][jj];
					}
				}
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}