Untitled
unknown
plain_text
2 years ago
10 kB
13
Indexable
#include<iostream> using namespace std; int M[25][25]; int visit[25][25]; int G[5][2]; int N,MV; int f=-1,r=-1; int Qx[10000]; int Qy[10000]; void push(int x,int y) { f++; Qx[f] =x; Qy[f] =y; } void pop(int &x, int &y) { r++; x= Qx[r]; y= Qy[r]; } int bfs(int x, int y) { f=r=-1; push(x,y); visit[x][y] =1; while(f != r) { pop(x,y); int dx[4]= { 1,-1 ,0,0}; int dy[4]= {0,0,-1,1}; for(int i=0; i<4; i++) { int xx= x+ dx[i]; int yy = y+dy[i]; if(xx >=1 && xx <= N && yy >=1 && yy <= N) { if(M[xx][yy] != 0 && visit[xx][yy] == 0) { push(xx,yy); visit[xx][yy] = visit[x][y] +1; } } } } int maxx=0; for(int i=1; i<= MV; i++) { if(visit[G[i][0]][G[i][1]] > maxx) {maxx= visit[G[i][0]][G[i][1]];} if(visit[G[i][0]][G[i][1]] == 0) return 25; } return maxx; } int main() { freopen("Text.txt","r",stdin); int t; cin >> t; for(int stt =1; stt <=t; stt ++) { cin >> N >> MV; for(int i=1; i <= MV; i++) { cin >> G[i][0] >> G[i][1]; } for(int i=1; i<=N; i++) { for(int j=1; j<= N; j++) { cin >> M[i][j]; visit[i][j] =0; } } for(int i=1; i <= MV; i++) { M[G[i][0]][G[i][1]] =2; } ////////////////////////////////// int minn= 25; for(int i=1; i<=N; i++) { for(int j=1; j<= N; j++) { if(M[i][j] == 1) { if(bfs(i,j) -1 < minn) {minn= bfs(i,j) -1 ;} for(int q=1; q<= N; q++) { for(int k=1; k<=N; k++) visit[q][k] =0; } } } } ///////////////////////////// if(minn != 24) { cout << "Case #" << stt << endl << minn << endl;} else { cout << "Case #" << stt << endl << "-1" << endl;} } return 0; } ,,,/////////////////////////////////kim cuong #include<iostream> using namespace std; int index,mark; int Qx[10000000]; int f=-1; int start[10000]; int cuoi[10000]; int visit[10000]; void push(int x){ f++; Qx[f]=x; } void pop(int &x){ x=Qx[f]; f--; } void dfs(int x) { push(x); while(f != -1) { pop(x); for(int i=0; i<=index; i++) { //cout << start[i] << " " <<cuoi[i] <<" " << visit[cuoi[i]] << endl; if(start[i] == x ) { push(cuoi[i]); visit[cuoi[i]] ++; } if(start[i] == x && visit[cuoi[i]] >= 2 ) { mark=1; } } if(mark == 1) {f=-1;} } } int main() { //freopen("Text.txt","r",stdin); int t; cin >> t; for(int stt=1; stt<=t; stt++) { int n; cin >> n; index=0; for(int i=0; i<10000; i++) { start[i] =cuoi[i] =0; } for(int st=1; st<=n; st++) { int m; cin >> m; mark =0; for(int i=1; i<=m; i++) { cin >> cuoi[index]; start[index] = st; index ++; } } for(int i=1; i<=n; i++) { for(int j=0; j <10000; j++) {visit[j] =0;} dfs(i); if(mark == 1) {break;} } cout << "Case #" << stt << endl; if(mark ==1 ) { cout << "Yes" << endl;} else {cout << "No" << endl;} } return 0; } //////////////////////////mount #include <iostream> #define N 305 using namespace std; int n; int a[N][N]; int sx[N]; int sy[N]; int dd[N][N]; int sv,sl,sc; int minn,maxx; int hx[]={0,-1,0,1}; int hy[]={-1,0,1,0}; void doc() { cin>>n; minn=200; maxx=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { cin>>a[i][j]; if(a[i][j]>maxx)maxx=a[i][j]; if(a[i][j]<minn)minn=a[i][j]; } //cout<<minn<<" ---"<<maxx<<"\n"; } bool kt(int u,int v) { if(a[1][1]>v||a[1][1]<u)return false; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)dd[i][j]=0; int dau=1,cuoi=0; sx[++cuoi]=1; sy[cuoi]=1; dd[1][1]=1; while(dau<=cuoi) { int x=sx[dau]; int y=sy[dau]; //cout<<x<<" "<<y<<"\n"; dau++; for(int i=0;i<4;i++) { int xx=x+hx[i]; int yy=y+hy[i]; if(xx>0&&xx<=n&&yy>0&&yy<=n) if(a[xx][yy]>=u&&a[xx][yy]<=v) if(dd[xx][yy]==0) { dd[xx][yy]=1; sx[++cuoi]=xx; sy[cuoi]=yy; } } } //cout<<u<<" "<<v<<" "<<dd[n][n]<<"\n"; if(dd[n][n]==1)return true; return false; } bool check(int k) { for(int i=minn;i<=maxx-k;i++) { //cout<<i<<" "<<i+k<<"\n"; if(kt(i,i+k)) { //cout<<i<<"- "<<i+k<<"\n"; return true; } } return false; } int main() { //freopen("input.txt","r",stdin); int TC; cin>>TC; for(int tc=1;tc<=TC;tc++) { doc(); int lo=0,hi=maxx-minn; while(lo<hi) { int mid=(lo+hi)/2; if(check(mid))hi=mid;else lo=mid+1; } cout<<"#"<<tc<<" "; cout<<lo<<"\n"; //cout<<sv<<" "<<sl<<" "<<sc<<"\n"; } return 0; } //////////////////////////////nuoc bien #include<iostream> using namespace std; int m,n,lev,ans; int dem_nuoc, dem_dat; int M[105][105]; int visit[105][105]; int f=-1, r=-1; int Qx[100000] ; int Qy[100000]; void push(int x, int y) { f++; Qx[f] = x; Qy[f] =y; } void pop(int &x,int &y) { r++; x= Qx[r]; y= Qy[r]; } void bfs_nuoc(int x,int y,int k) { f=r=-1; push(x,y); dem_nuoc++; visit[x][y] =1; while(f != r) { pop(x,y); int dx[4]={1,-1,0,0}; int dy[4]= {0,0,1,-1}; for(int i=0; i<4; i++) { int xx= x +dx[i]; int yy= y +dy[i]; if(xx >=1 && xx <=m && yy >=1 && yy <=n && visit[xx][yy] == 0 && M[xx][yy] <=k) { push(xx,yy); visit[xx][yy] =1; dem_nuoc++; } } } } void bfs_dat(int x,int y) { f=r=-1; push(x,y); dem_dat ++; visit[x][y] =1; while(f != r) { pop(x,y); int dx[4]={1,-1,0,0}; int dy[4]= {0,0,1,-1}; for(int i=0; i<4; i++) { int xx= x +dx[i]; int yy= y +dy[i]; if(xx >=1 && xx <=m && yy >=1 && yy <=n && visit[xx][yy] == 0 ) { push(xx,yy); visit[xx][yy] =1; dem_dat++; } } } } void reset() { for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) visit[i][j]=0; } } int main() { freopen("Text.txt","r",stdin); int stt=1; while(1) { cin >> m >> n; if(m== 0 && n== 0) {break;} else { int minn=1000, maxx=0; for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) { cin >> M[i][j]; visit[i][j] =0; if((i == 1 || i== m || j==1 || j==n) && M[i][j] < minn) { minn = M[i][j]; } if(M[i][j] > maxx) { maxx = M[i][j];} } } //////////////// ans =0; for(lev =minn; lev <= maxx; lev++) { dem_dat=0 ; dem_nuoc=0; reset(); for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) { if((i == 1 || i== m || j==1 || j==n ) && M[i][j] <= lev && visit[i][j] ==0) { bfs_nuoc(i,j,lev); } } } for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) { if(visit[i][j] ==0 && M[i][j] > lev) { bfs_dat(i,j); i=200 ; j=200; } } } if(dem_nuoc+ dem_dat < m*n) {ans = lev; break;} } } if(ans ==0 ) cout << "Case " << stt << ": Island never splits." << endl; else cout << "Case " << stt << ": Island splits when ocean rises "<< ans << " feet." << endl; stt++; } return 0; } ////////////////////////////////well #include<iostream> using namespace std; #define INF 1000000 int N; bool Visited[100]; int key[100]; int adj[105][105]; int parent[100]; int findMin() { int ret = 0; int min = INF; for(int v =0; v < N; v++) { if(!Visited[v] && key[v] < min) { min = key[v]; ret = v; } } return ret; } int sum_arr(int a[], int n) { int sum = 0; for(int i =0; i< n; i++) { sum+= a[i]; } return sum; } int main() { int T; int res; // freopen("Text.txt","r",stdin); cin>>T; for(int tc =1; tc <= T; tc++) { cin>>N; for(int i = 0; i< N; i++) { for(int j = 0; j< N; j++) { cin>>adj[i][j]; } } for(int i =0; i< N; i++) { Visited[i] = false; key[i] = INF; parent[i] = -1; } key[0] = 0; for(int i =0; i < N - 1; i++) { int u = findMin(); Visited[u] = true; for(int v = 0; v < N; v++) { if(!Visited[v] && adj[u][v] < key[v]) { key[v] = adj[u][v]; parent[v] = u; } } } int sum = sum_arr(key, N); cout<<"Case #"<<tc<<endl; cout<<sum<<endl; } return 0; } ///////////////////xe tang #include<iostream> #define INT_MAX 2147483648 using namespace std; char M[400][400]; long long visit[400][400]; int Qx[10000000]; int Qy[10000000]; int Qd[10000000]; int r=-1,f=-1; void push(int x,int y ,int d){ r++; Qx[r]=x; Qy[r]=y; Qd[r]=d; } void pop(int &x,int &y, int &d){ f++; x=Qx[f]; y=Qy[f]; d=Qd[f]; } int dx[4]={1,-1,0,0}; int dy[4]={0,0,-1,1}; int bfs(int x,int y,int d,int ex,int ey){ push(x,y,d); int mark =0; while(r !=f){ pop(x,y,d); //cheak near for(int i=0; i<4; i++){ //is safe int xx=x+dx[i]; int yy=y+dy[i]; if(M[xx][yy] =='E' && d+1 <visit[xx][yy] ){ push(xx,yy,d+1); visit[xx][yy] =d+1; } else if(M[xx][yy] =='B' && d+2 <visit[xx][yy] ){ push(xx,yy,d+2); visit[xx][yy] =d+2; } else if(M[xx][yy] =='T' && d+1 <visit[xx][yy]){ visit[xx][yy] =d+1; mark =1; } } } if(mark ==0) return -1; else return visit[ex][ey]; } int main() { //freopen("Text1.txt","r",stdin); int T,m,n; int yx,yy,tx,ty; cin >> T; for(int tc=1; tc<= T; tc++) { cin >> m>>n; //reset for(int i=0; i<400; i++) { for(int j=0; j<400; j++) { M[i][j]= 'X'; visit[i][j]=INT_MAX; } } for(int i=0; i<m; i++) { cin >> M[i]; //INTPUT } /////////////////// for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { if(M[i][j]== 'Y') {yx=i; yy=j;} else if(M[i][j] =='T') {tx=i; ty=j;} } } cout << "Case #" << tc<< endl << bfs(yx,yy,0,tx,ty) << endl; } return 0; }
Editor is loading...