NC237371. 小乐的房间
描述
传说中,在这个世界上有平行空间,但是只有在某些特定的时间(六一),特定的位置(某辆刹车失灵且高速行驶的车前)才可以穿越平行空间的壁障,短暂地前往那未知の地。
非常Lucky的,在今天,你在群里一如既往地水群的时候,平时御車得当的群友竟一时没有收住jio,使得你成功来到了一个少年の床底。
。。。。。
六一这一天,熬夜打了一夜的小乐从睡梦中醒来,他发现他自己的房间天旋地转,分不清东西南北。非常慌张的小乐害怕地掏出手机,打开了游戏,看到游戏里的上下左右他还分得清,这下他才安下了心,原来是房间坏了。
输入描述
第一行一个正整数n代表房间的边长(0 < n <= 1000)从第二行开始,紧接着n * n行。每行4个正整数,第i - 1行代表编号为i的空间可以前往哪4个编号的相邻空间。(其中你当前所在空间编号为 1,处于整个房间西北角的角落。)
输出描述
输出多个位置的编号,以空格分隔,编号小的在前面,代表所有可能是房间角落的空间的编号
示例1
输入:
2 2 3 2 3 1 4 1 4 4 1 4 1 2 3 2 3
输出:
1 2 3 4
说明:
C++ 解法, 执行用时: 924ms, 内存消耗: 19960K, 提交时间: 2022-06-03 11:20:32
#include<bits/stdc++.h> using namespace std; const int maxn=1001*1001; int room[maxn][5]; int main() { int n; cin>>n; for(int i=1;i<=n*n;i++) { for(int j=1;j<=4;j++) { cin>>room[i][j]; } } map<int,int> mp{{room[1][1],2},{room[1][2],2},{room[1][3],2},{room[1][4],2}}; for(int i=1;i<=4;i++) { for(int j=1;j<=4;j++) { mp[room[room[1][i]][j]]++; } } for(auto &f: mp ) { if(f.second>1) { cout<<f.first<<" "; } } return 0; }