7562
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
using namespace std;
int t, l;
int dx[8] = { 1,2,2,1,-1,-2,-2,-1 };
int dy[8] = { 2,1,-1,-2,-2,-1,1,2 };
int map[300][300];
int check[300][300];
int visited[300][300];
queue<pair<int, int>> q;
void BFS(int target_x,int target_y) {
while (!q.empty()) {
int x = q.front().first;
int y = q.front().second;
visited[x][y] = 1;
q.pop();
if (x == target_x && y == target_y) {
cout << check[x][y] << '\\n';
return;
}
for (int i = 0; i < 8; i++) {
int next_x = x + dx[i];
int next_y = y + dy[i];
if (next_x >= 0 && next_x < l
&& next_y >= 0 && next_y < l
&& visited[next_x][next_y] == 0) {
visited[next_x][next_y] = 1;
check[next_x][next_y] = check[x][y] + 1;
q.push({ next_x,next_y });
}
}
}
}
int main() {
cin >> t;
while (t--) {
cin >> l;
int night_x, night_y;
int target_x, target_y;
cin >> night_x >> night_y;
cin >> target_x >> target_y;
q.push({ night_x,night_y });
BFS(target_x,target_y);
for (int i = 0; i < 300; i++) {
for (int j = 0; j < 300; j++) {
check[i][j] = 0;
visited[i][j] = 0;
}
}
while (!q.empty())
q.pop();
}
return 0;
}
24479
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <vector>
#include <cstring>
#include <cmath>
#define P pair<int, int>
#define F first
#define S second
#define LL long long int
using namespace std;
int N, M, R;
vector<int> connect[100001];
int check[100001];
int Cnt[100001];
int cnt = 1;
void dfs(int node){
check[node] = 1;
Cnt[node] = cnt++;
for(int i = 0; i < connect[node].size(); i++){
int x = connect[node][i];
if(check[x] == 0){
dfs(x);
}
}
}
void solve(){
for(int i = 1; i <= N; i++){
sort(connect[i].begin(), connect[i].end());
}
dfs(R);
for(int i = 1; i <= N; i++){
cout << Cnt[i] << "\\n";
}
}
int main() {
cin.tie(0);
cout.tie(0);
cin >> N >> M >> R;
for(int i = 1; i <= M; i++){
int x, y;
cin >> x >> y;
connect[x].push_back(y);
connect[y].push_back(x);
}
solve();
return 0;
}
24444
#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdio>
using namespace std;
int N, M, K;
vector<int> connect[100001];
int check[100001];
void bfs(int start){
int Visit = 1;
queue<int> q;
q.push(start);
check[start] = Visit++;
while(!q.empty()){
int x = q.front();
q.pop();
for(int i = 0; i < connect[x].size(); i++){
int xx = connect[x][i];
if(check[xx] == 0){
check[xx] = Visit++;
q.push(xx);
}
}
}
}
void solve(){
for(int i = 1; i <= N; i++){
sort(connect[i].begin(), connect[i].end());
}
bfs(K);
for(int i = 1; i <= N; i++){
cout << check[i] << "\\n";
}
}
int main() {
cin.tie(0);
cout.tie(0);
cin >> N >> M >> K;
for(int i = 1; i <= M; i++){
int x, y;
cin >> x >> y;
connect[x].push_back(y);
connect[y].push_back(x);
}
solve();
return 0;
}