Untitled
unknown
plain_text
2 years ago
1.4 kB
17
Indexable
#include<iostream> using namespace std; int a[301][301]; int vs[301]; int qx[100000]; int qy[100000]; int f=-1; int r=-1; int n; void push( int x) { r++; qx[r]=x; } void pop(int &x) { f++; x=qx[f]; } bool BFS(int x,int yy) { r=-1; f=-1; for(int i=1;i<=n;i++)vs[i]=0; push(x); vs[x]=1; while(r!=f){ pop(x); for(int y=1;y<=n;y++){ if(a[x][y]==1 && vs[y]==0){ push(y); vs[y]=1; if(yy==y)return true; } } } return false; } void BFS2(int x) { r=-1; f=-1; push(x); vs[x]=1; while(r!=f){ pop(x); for(int y=1;y<=n;y++){ if(a[x][y]==1 && vs[y]==0){ push(y); vs[y]=1; } } } } int main() { freopen("input.txt", "r", stdin); int T; cin >>T; for(int tc=1; tc<=T; tc++){ cin >>n; int ans1=0; for(int i=1;i<=n;i++){ int dem=0; for(int j=1; j<=n;j++){ cin >> a[i][j]; if(a[i][j]==0) dem++; } if(dem==n) ans1++; } //tinh so vung int ans=0; for(int i=1;i<=n;i++)vs[i]=0; for(int i=1;i<=n;i++){ if(vs[i]==0){ ans++; BFS2(i); } } //tinh so cau int ans2=0; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(a[i][j]==1){ a[i][j]=0; a[j][i]=0; if(!BFS(i,j))ans2++; a[i][j]=1; a[j][i]=1; } } } //cout<< ans2<< endl; cout <<ans<<" "<<ans1<<" " << ans2<< endl; } return 0; }
Editor is loading...