```cpp
#include<iostream>
#include<cstdio>
using namespace std;
int c,k,startx,starty;
int dt[401][401];
bool flag=0;
void move(int jd)
{
for(int i=1;i<=c;i++)
{
for(int ii=1;ii<=k;ii++)
{
if (dt[i][ii]==jd-1)
{
if (dt[i-2][ii-1]==0&&i-2>=1) {dt[i-2][ii-1]=jd;flag=1;}
if (dt[i+2][ii-1]==0&&i+2<=c) {dt[i+2][ii-1]=jd;flag=1;}
if (dt[i-2][ii+1]==0&&i-2>=1) {dt[i-2][ii+1]=jd;flag=1;}
if (dt[i+2][ii+1]==0&&i+2<=c) {dt[i+2][ii+1]=jd;flag=1;}
if (dt[i-1][ii-2]==0&&ii-2>=1) {dt[i-1][ii-2]=jd;flag=1;}
if (dt[i+1][ii-2]==0&&ii-2>=1) {dt[i+1][ii-2]=jd;flag=1;}
if (dt[i-1][ii+2]==0&&ii+2<=k) {dt[i-1][ii+2]=jd;flag=1;}
if (dt[i+1][ii+2]==0&&ii+2<=k) {dt[i+1][ii+2]=jd;flag=1;}
}
}
}
if (flag==0) return;
else {flag=0;move(jd+1);}
}
int main()
{
cin>>c>>k>>startx>>starty;
dt[startx][starty]=1;
move(2);
for(int i=1;i<=c;i++)
{
for(int ii=1;ii<=k;ii++)
{
if (dt[i][ii]!=0) printf("%-5d", dt[i][ii]-1);
else cout<<"-1 ";
}
cout<<endl;
}
}
```
QAQ
by twelveZ @ 2018-09-14 23:13:19
@[AC机的朋友AC鸭](/space/show?uid=107232) 一题图论被你做成了什么鬼………………
by 雪绮晶 @ 2018-09-14 23:18:26
@[雪绮晶](/space/show?uid=110460) 233误导~~实际看错题目了~~
by twelveZ @ 2018-09-14 23:24:57
@[AC机的朋友AC鸭](/space/show?uid=107232) 这题明明是tarJan缩点或者dfs100次…………
by 雪绮晶 @ 2018-09-14 23:30:09
@[l_water](/space/show?uid=51164) %%%大佬,我乱写了个dfs...
by Sai0511 @ 2018-09-14 23:47:44
@[l_water](/space/show?uid=51164)
tarjan什么鬼-_-||
明明就是topsort
by nothingness @ 2018-09-15 07:18:44
@[nothingness](/space/show?uid=31317) 纳尼????不是tarjan缩点吗?
by l_water @ 2018-09-15 13:59:18
@[l_water](/space/show?uid=51164)
我就简单的拓扑过的
神奇乱搞算法(不过速度太慢了,100ms)
```
#include "bits/stdc++.h"
#define N 200001
using namespace std;
int n,m,t1,t2,p,f[N];
int k,b[N],first[N],next[N],last[N];
int q[N],h,t;
int add(int x,int y)
{
k++;
b[k]=y;
if(first[x]==0)
first[x]=k;
else
next[last[x]]=k;
last[x]=k;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&t1,&t2);
add(t2,t1);
}
for(int i=n;i>0;i--)
if(!f[i])
{
h=t=0;
q[++t]=i;
f[i]=i;
while(h<t)
{
p=first[q[++h]];
while(p)
{
if(f[q[h]]>f[b[p]])
{
f[b[p]]=f[q[h]];
q[++t]=b[p];
}
p=next[p];
}
}
}
for(int i=1;i<=n;i++)
printf("%d ",f[i]);
return 0;
}
```
by nothingness @ 2018-09-15 14:50:16