这题根本不着BFS啊?!

P1162 填涂颜色

忽略上面的吧, 测试发现有一个测试点过不了, 我还是太年轻了.
by li1127217ye @ 2017-09-22 09:03:39


应该是存在左边界,右边界,上边界,下边界的点肯定是数字"2"了.
by uhgariej @ 2017-09-22 15:02:38


好像是的 按这个思路A了 ...cpp ```cpp #include<bits/stdc++.h> using namespace std; int main(){ int n,flag[31][31],x[901],y[901],tot=0,u,d,l,r; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ cin>>flag[i][j]; if(flag[i][j]){ x[++tot]=i; y[tot]=j; } } for(int i=2;i<n;i++) for(int j=2;j<n;j++){ if(!flag[i][j]){ u=d=l=r=0; for(int k=1;k<=tot;k++){ if(x[k]==i&&y[k]>j)r=1; if(x[k]==i&&y[k]<j)l=1; if(y[k]==j&&x[k]<i)d=1; if(y[k]==j&&x[k]>i)u=1; } if(r&&l&&u&&d)flag[i][j]=2; } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)cout<<flag[i][j]<<" "; cout<<endl; } } ```
by 「已注销」 @ 2017-09-25 17:15:47


|