您的位置:首页 > 其它

1934. 移动小球

2016-10-16 15:29 344 查看
#include <iostream>
using namespace std;

const int maxn_1= 500010;
const int maxn_2=100010;

int _left[maxn_1],_right[maxn_1];

void link (int a, int b) {
_right[a] = b;
_left[b] = a;
}

int main() {
int t;
cin>>t;
while (t--) {
int n,m;
cin>>n>>m;
for (int i=0;i<=n;i++) link(i,i+1);

for (int i=0;i<m;i++) {
int op,a,b;
cin>>op>>a>>b;
link(_left[a],_right[a]);
if (op==1) {
link(_left[b],a);//先b左,以免丢失
link(a,b);
} else  {
link(a,_right[b]);//先b右以免丢失
link(b,a);
}
}

for (int i=_right[0];i<=n;i=_right[i]) {
cout<<i<<" ";
}
cout<<endl;
}
}


用数组模拟链表是在这种oj中非常实用的一个技巧,如果知道数组的下标也就是链表储存的值的话就可以直接通过,数组得到相应的操作,而不用像链表那样一次一次去迭代。而可采用这种方法的情况,一般是链表中的的值是整形才行。而且下标必须是不重复的才行,否则很容易导致链表中断!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: