Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35862 baka24 【S】T3 C++ 通过 100 639 MS 372 KB 1704 2025-01-05 21:02:06

Tests(48/48):


#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define fr first #define sc second #define mk make_pair #define pb push_back int read(){int x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c<='9'&&c>='0')x=x*10+c-'0',c=getchar();return x*f;} const int MAXN=60,N=15; int n,m,k,a[MAXN][MAXN],dis[MAXN][MAXN],vis[MAXN][MAXN],mx[4]={0,0,1,-1},my[4]={-1,1,0,0}; priority_queue<pair<int,pii> >q; int dji(int X,int Y){ memset(dis,0x3f,sizeof(dis)); memset(vis,0,sizeof(vis)); q.push(mk(1,mk(X,Y)));dis[X][Y]=1; while(!q.empty()){ int x=q.top().sc.fr,y=q.top().sc.sc;q.pop(); for(int o=0;o<4;o++){ int nx=mx[o]+x,ny=my[o]+y,w=a[x][y]^a[nx][ny]; if(vis[nx][ny])continue; vis[nx][ny]=1; if(nx&&ny&&nx<=n&&ny<=m){ if(dis[nx][ny]>dis[x][y]+w){ dis[nx][ny]=dis[x][y]+w; q.push(mk(-dis[nx][ny],mk(nx,ny))); } } } } int res=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++)if(a[i][j])res=max(res,dis[i][j]); } return res; } void slv(){ n=read(),m=read(); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ a[i][j]=getchar(); while(a[i][j]!='0'&&a[i][j]!='1')a[i][j]=getchar(); a[i][j]-='0'; } } int ans=n*m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++)ans=min(ans,dji(i,j)); } printf("%lld",ans); } signed main(){ // freopen("draw.in","r",stdin);freopen("draw.out","w",stdout); slv(); return 0; }


测评信息: