2018百度之星度度熊学队列

使用stl中的list就可以了,不知道为啥用reverse会wa,只能是一个个的插入list了,索幸没有超时。

代码:

#include 
#include        
#include 
using namespace std; 
const int inf=150000+7;
listarr[inf];void read(int &x)
{char ch = getchar();x = 0;for (; ch < '0' || ch > '9'; ch = getchar());for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
}int main()		 
{   int n,q,u,v,w,val,flag;while( ~scanf("%d %d",&n,&q) ){	for(int i=1;i<=q;i++)   	 {read(flag);if(flag==1){read(u),read(w),read(val); if(w==0)arr[u].push_front(val);else  arr[u].push_back(val);}else if(flag==2){read(u),read(w); if(w==0){if(arr[u].empty()){printf("-1\n");continue;}	else{printf("%d\n",arr[u].front());arr[u].pop_front();	}}else if(w==1){if(arr[u].empty())printf("-1\n");else {printf("%d\n",arr[u].back());arr[u].pop_back();}}}else  {read(u),read(v),read(w);if(w==0){ /*arr[u].merge(arr[v] );*/while(!arr[v].empty()){arr[u].push_back( arr[v].front() );arr[v].pop_front();} }else  {/*reverse(arr[v].begin(),arr[v].end());arr[u].merge(arr[v] );*/while(!arr[v].empty()){arr[u].push_back( arr[v].back() );arr[v].pop_back();} }}}for(int i=1;i<=n;i++)arr[i].clear(); }return 0;	
} 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部