QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#438334#5476. Remodeling the Dungeongrass8cow#ML 8ms40468kbC++171.4kb2024-06-10 15:58:292024-06-10 15:58:29

Judging History

你现在查看的是最新测评结果

  • [2024-06-10 15:58:29]
  • 评测
  • 测评结果:ML
  • 用时:8ms
  • 内存:40468kb
  • [2024-06-10 15:58:29]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
int n,m,N,id[1010][1010];
vector<int>g[1010000];
char c[2010];
#define pb push_back
int d1[1010000],dn[1010000];
void ad(int x,int y){
    g[x].pb(y),g[y].pb(x);
}
int f1[1001000];
bool in[1010000];
int rk[1001000];
bool typ;
void dfs1(int x,int d){
    (typ?dn[x]:d1[x])=d;
    for(int v:g[x])if(f1[x]!=v)
    f1[v]=x,dfs1(v,d+1);
}
int A;
void dfs(int x){
    rk[x]=A;
    for(int v:g[x])if(!rk[v]&&!in[v])dfs(v);
}
int ans;
void tr(int u,int v){
    if(rk[u]==rk[v])return;if(rk[u]>rk[v])swap(u,v);
    ans=max(ans,d1[u]+dn[v]+1);
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)id[i][j]=++N;
    for(int i=1;i<=n*2+1;i++){
        scanf("%s",c+1);
        if(i&1){
            if(i==1||i==n*2+1)continue;
            int h=i/2;
            for(int j=1;j<=m;j++)if(c[j*2]=='.')ad(id[h][j],id[h+1][j]);
        }
        else{
            int h=i/2;
            for(int j=1;j<m;j++)if(c[j*2+1]=='.')ad(id[h][j],id[h][j+1]);
        }
    }
    typ=0,dfs1(1,0),memset(f1,0,sizeof(f1)),typ=1,dfs1(N,0);
    vector<int>xx;
    int u=1;while(u)xx.push_back(u),in[u]=1,u=f1[u];
    for(A=0;A<xx.size();A++)dfs(xx[A]);
    for(int i=1;i<=n;i++)for(int j=1;j<m;j++)tr(id[i][j],id[i][j+1]);
    for(int i=1;i<n;i++)for(int j=1;j<=m;j++)tr(id[i][j],id[i+1][j]);
    printf("%d\n",ans+1);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 6ms
memory: 40468kb

input:

2 3
+-+-+-+
|.....|
+.+.+.+
|.|.|.|
+-+-+-+

output:

6

result:

ok single line: '6'

Test #2:

score: 0
Accepted
time: 8ms
memory: 35816kb

input:

2 3
+-+-+-+
|...|.|
+.+.+.+
|.|...|
+-+-+-+

output:

4

result:

ok single line: '4'

Test #3:

score: 0
Accepted
time: 4ms
memory: 38252kb

input:

5 5
+-+-+-+-+-+
|...|...|.|
+-+.+.+.+.+
|...|.|.|.|
+.+.+.+-+.+
|.|...|.|.|
+.+.+-+.+.+
|.|.....|.|
+-+.+.+-+.+
|...|.....|
+-+-+-+-+-+

output:

15

result:

ok single line: '15'

Test #4:

score: -100
Memory Limit Exceeded

input:

500 500
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...

output:


result: