QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#163730 | #6739. Teleport | ucup-team1209# | AC ✓ | 628ms | 198016kb | C++20 | 1.9kb | 2023-09-04 14:36:52 | 2023-09-04 14:36:52 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define rep(i,x,y) for (int i=(x);i<=(y);i++)
#define drep(i,y,x) for (int i=(y);i>=(x);i--)
#define pii pair<int,int>
#define fir first
#define sec second
#define MP make_pair
#define templ template<typename T>
templ bool chkmin(T &x,T y){return x>y?x=y,1:0;}
templ bool chkmax(T &x,T y){return x<y?x=y,1:0;}
void file() {
#ifdef zqj
freopen("a.in","r",stdin);
#endif
}
typedef long long ll;
#define sz 5555
int n,K;
char s[sz][sz];
int vis[sz][sz];
int in(int x,int y){return x&&y&&x<=n&&y<=n&&s[x][y]!='*';}
pii fa[sz][sz]; int dis[sz][sz];
pii getfa(pii t) {
if (!vis[t.fir][t.sec]||fa[t.fir][t.sec]==t) return t;
if (getfa(fa[t.fir][t.sec])==fa[t.fir][t.sec]) return fa[t.fir][t.sec];
dis[t.fir][t.sec]+=dis[fa[t.fir][t.sec].fir][fa[t.fir][t.sec].sec];
return fa[t.fir][t.sec]=getfa(fa[t.fir][t.sec]);
}
int main() {
file();
ios::sync_with_stdio(false),cin.tie(0);
scanf("%d %d",&n,&K);
rep(i,1,n) scanf("%s",s[i]+1);
vis[1][1]=1;
rep(i,1,n) rep(j,1,n) if (in(i,j)) {
int x=j+1,y=i,cc=1;
while (!in(x,y)&&min(x,y)<=n&&cc<K) swap(x,y),++x,++cc;
if (in(x,y)) fa[i][j]=pii{x,y},dis[i][j]=cc;
else fa[i][j]=pii{i,j},dis[i][j]=0;
}
queue<pii>q;
q.push({1,1});
static int fx[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
while (q.size()) {
auto [x,y]=q.front(); q.pop();
if (x==n&&y==n) return cout<<vis[x][y]-1<<'\n',0;
rep(i,0,3) {
int xx=x+fx[i][0],yy=y+fx[i][1];
if (in(xx,yy)&&!vis[xx][yy]) vis[xx][yy]=vis[x][y]+1,q.push({xx,yy});
}
while (getfa({x,y})!=pii{x,y}&&!vis[fa[x][y].fir][fa[x][y].sec]&&dis[x][y]<=K) {
auto [xx,yy]=fa[x][y];
vis[xx][yy]=vis[x][y]+1,q.push({xx,yy});
}
}
cout<<-1<<'\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 9928kb
input:
3 2 .*. .*. ...
output:
3
result:
ok 1 number(s): "3"
Test #2:
score: 0
Accepted
time: 3ms
memory: 9920kb
input:
3 3 .*. .*. ...
output:
2
result:
ok 1 number(s): "2"
Test #3:
score: 0
Accepted
time: 43ms
memory: 44180kb
input:
961 4 ...*.*..*.....*.*..*..*..*.*.*.*.....*.....*....*..*...*....*.........*....*....*...*......*..*..*...*..*...*.....*...*...*.*.*.........**..**.......*.......*...*...*.*.*........*....*..*..*...*.....*.*......**.**..**...*..*.**.....*....*.*.*..*..*..*.*..*.*..*......*..*..*.*......*...*.*...*....
output:
540
result:
ok 1 number(s): "540"
Test #4:
score: 0
Accepted
time: 14ms
memory: 42768kb
input:
975 434 .*......*...*....*......*..*...*...**....*....*.......*...*.....*..*..*.*.*..*.*..*..*.*....*.*.*..*...*.*.....*......*.*...*......*..*..*......**..**.......*...*.*..*..*.*.**....*.*.*.....*....**.*..*..**.*..*.....*.*......*..*...*..*...*....**...*....*..*.*.*...........*..*.**.*.*..*.*..**...
output:
5
result:
ok 1 number(s): "5"
Test #5:
score: 0
Accepted
time: 13ms
memory: 40236kb
input:
966 19 ..*.*.*........*.*..*.**..*....*..*..*....*.**..*.*.*..*.*.*..**....*.*.*....*.....*...........*.*..*.....*..*...*....*.*...*.*...*....*...*...*.*.*....*.*....**.*.......*....*.*.*...*..*..*..*.*...*...*...*..*..*..........*.*....*.*......*...*..**....*.*....**.....*..*..*..*.*....*...*..*.*....
output:
104
result:
ok 1 number(s): "104"
Test #6:
score: 0
Accepted
time: 15ms
memory: 44408kb
input:
973 199 ..**.*...*.*...*.*.*.*.**..*.*.*..*......*.....*.*.*..*...**.....*.*..*.*..*...*....*..*...*....*.*...*.*......*..*.*.*.*......**......*.*.*.*.*.*...*...*...*....*......*.*.*.*..*..*..*...*..*.*....*....*.*...*..*..*.*..**.**..*.**....*.*...*..**..**...*......*.....*.....*..*.*.......*.*.*.....
output:
10
result:
ok 1 number(s): "10"
Test #7:
score: 0
Accepted
time: 11ms
memory: 42828kb
input:
984 95 .....*.*...*....*..*....*.*....**.**......*....*.*.*.......*.....*.*..*....*..*....*.*.....*..*.......*.*......*.*....*.....*......*...*....*....*......*....*.*...*........*......*.*....*.*...*....*..**....*.*.*.**....*..*.*..*..*.*......*..*......*.*......*...*......*.......*...*....*...**.....
output:
21
result:
ok 1 number(s): "21"
Test #8:
score: 0
Accepted
time: 628ms
memory: 198016kb
input:
2996 2 ..*..*.....*..*.....*....**..*...........*..*........*..*..*.*..*..*.*.*.**.*.....**.*.......*.......*..*....*.....*..*.*.*....**.....*..**.....*.....*.......*.*.*.*....*...*..*.**......**..*.*...**..*..*......*..*.*...*......*.*.*.*...**.**..*.*........*.*..*...**......*.*..*.*..*....*.*.*.*...
output:
3354
result:
ok 1 number(s): "3354"
Test #9:
score: 0
Accepted
time: 118ms
memory: 157880kb
input:
2905 1023 .........*..*.**.....*...*.*....*.*.**.*..*...*..*....*...*.**.*.*.**..*......*...*.**..*...*..*.........*.........*.*.....**.*.*........*.....*.*....*..*.*.....*..*..*..*.*..*....**...*.*..*....*......*.........*.*.*.*......**.**.**..*.*.*..*..**..*..*...*...*.*.......*..*..*....*.*.........
output:
6
result:
ok 1 number(s): "6"
Test #10:
score: 0
Accepted
time: 131ms
memory: 166616kb
input:
2978 104 .*.........*...**.....*...*........*..*...*.*.*.....*........*.*...*.....*...*....*...*..*...*..*..*....*...*..*.*....*....*...*.......*.*.....*.*.......*.*..*...*.*.......*.*.*..........*.*..*.*..**.*....*.*.*..*...*.*.*.....*....*...*.*.*.*.........*.*.....**.*.*..*.*....*........*...*.**...
output:
58
result:
ok 1 number(s): "58"