Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35863 A21μΘ_wjy 【S】T3 C++ 通过 100 529 MS 564 KB 1731 2025-01-05 21:32:27

Tests(48/48):


#include<bits/stdc++.h> #define int long long #define PII pair<int,int> #define fir first #define sec second using namespace std; int n,m; const int N=55; const int INF=1e12; int mp[N][N]; struct Edge{ int v,w; Edge(int _v=0,int _w=0){v=_v,w=_w;} }; vector<Edge> E[N*N]; inline int MP(int x,int y){ return (x-1)*m+y; } int Dis[N*N]; bool vis[N*N]; inline int Dij(int s){ priority_queue<PII,vector<PII>,greater<PII> > q; for(int i=1;i<=n*m;i++)Dis[i]=INF,vis[i]=0; Dis[s]=1; q.push(PII(0,s)); while(!q.empty()){ int u=q.top().sec; q.pop(); if(vis[u])continue; vis[u]=1; for(Edge e:E[u]){ int v=e.v,w=e.w; if(Dis[v]>Dis[u]+w){ Dis[v]=Dis[u]+w; q.push(PII(Dis[v],v)); } } } int ret=0; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(mp[i][j])ret=max(ret,Dis[MP(i,j)]); return ret; } signed main(){ #ifndef ONLINE_JUDGE freopen("light.in","r",stdin); freopen("light.out","w",stdout); #endif cin>>n>>m; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){ char t; cin>>t; mp[i][j]=t-'0'; } for(int i=1;i<=n;i++){ for(int j=1;j<m;j++){ E[MP(i,j)].push_back(Edge(MP(i,j+1),mp[i][j]!=mp[i][j+1])); E[MP(i,j+1)].push_back(Edge(MP(i,j),mp[i][j]!=mp[i][j+1])); } } for(int i=1;i<n;i++){ for(int j=1;j<=m;j++){ E[MP(i+1,j)].push_back(Edge(MP(i,j),mp[i][j]!=mp[i+1][j])); E[MP(i,j)].push_back(Edge(MP(i+1,j),mp[i][j]!=mp[i+1][j])); } } int Min=1e9; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++)Min=min(Min,Dij(MP(i,j))); } cout<<Min<<endl; return 0; }


测评信息: