Untitled
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; }