c++ Stake 和 queue的用法
来源:互联网 发布:linux vi 跳到指定行 编辑:程序博客网 时间:2024/05/21 11:03
写篇博客,以免忘记。
c++ stack,queue用法分别包含在文件<stack>,<queue>
stack的方法:
push():向容器顶部里插入元素;
pop():是删除容器顶部的元素;
top():返回容器顶部的元素;
size():返回容器的元素个数;
begin():是返回一个位于容器的第一个元素的迭代器;
end():返回一个位于容器的最后一个元素;
empty():检查是否为空
queue的用法,它和stack很像:
back():返回队列最后一个元素引用
empty():检查是否为空的
front():获得队列最前面一个元素引用
push():在队列尾添加一个数据
pop():删除队列头的一个数据
size():队列中元素个数
附上第一次打stake的程序:
Jzoj4686. 【NOIP2016提高A组8.12】通讯
#include <cstdio>#include <iostream>#include <cmath>#include <algorithm>#include <cstring>#include <stack>#define fo(i,a,b) for (int i=a;i<=b;i++)#define fd(i,a,b) for (int i=a;i>=b;i--)#define N 50005#define INF 2147483647using namespace std;stack<int> S;int t[N*2],last[N*2],next[N*2],value[N*2],dfn[N],low[N],rd[N],Qy[N],l=0;bool bz[N],v[N]; int tot,top,cnt;inline int read(){ int x=0,w=1; char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')w=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*w;}void add(int x,int y,int z){ t[++l]=y; next[l]=last[x]; value[l]=z; last[x]=l;}void Tarjan(int x){ S.push(x); dfn[x]=low[x]=++tot; bz[x]=true; for (int k=last[x];k;k=next[k]) { int v=t[k]; if (dfn[v]==0) { Tarjan(v); low[x]=min(low[v],low[x]); } else if (bz[v] && dfn[v]<low[x]) low[x]=dfn[v]; } if (low[x]==dfn[x]) { for (int v;1;) { v=S.top(); rd[v]=cnt; bz[v]=false; S.pop(); if (v==x) break; } cnt++; }}int main(){ int n,m; while (true) { n=read();m=read(); if (n==0 && m==0) break; fill(last,last+n,0); l=0,cnt=0,tot=0,top=0; fo(i,1,m) { int x,y,z; x=read();y=read();z=read(); add(x,y,z); } memset(bz,false,sizeof(bz)); memset(dfn,0,sizeof(dfn)); while(!S.empty()) S.pop(); fo(i,0,n-1) if (dfn[i]==0) Tarjan(i); fo(i,0,cnt-1) Qy[i]=INF; fo(i,0,n-1) { int u=rd[i]; for (int k=last[i];k;k=next[k]) { int v=rd[t[k]]; if (u!=v) Qy[v]=min(Qy[v],value[k]); } } int Ans=0; fo(i,0,cnt-1) { if (i==rd[0]) continue; Ans += Qy[i]; } printf("%d\n",Ans); } return 0;}
比较完整的
资料:
Stake
1 0
- c++ Stake 和 queue的用法
- C++queue的用法
- jQuery中queue和dequeue的用法
- jQuery中queue和dequeue的用法
- jQuery中queue和dequeue的用法
- STL中stack和queue的用法
- jQuery中queue和dequeue的用法
- jQuery中queue和dequeue的用法
- c++ 中 stack 和 queue 的用法
- jQuery中queue和dequeue的用法
- jQuery中queue和dequeue的用法
- STL中stack和queue的用法
- jQuery中queue和dequeue的用法
- jQuery中queue和dequeue的用法
- jQuery中queue和dequeue的用法
- c++stl的queue和priority_queue
- C++STL之queue用法
- Queue的用法
- 以后要学会使用奇偶性啊
- Shell脚本编程笔记(1)
- HDU 5748 Bellovin(LIS)
- 2016.7.18纪中比赛总结
- noip2013 火柴排队
- c++ Stake 和 queue的用法
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 2016.7.16纪中比赛总结
- 字典的使用
- AFNetworking 3.0迁移指南
- 双机热备工作原理图
- NOIP 2015 斗地主
- 2016.7.15纪中比赛总结
- 6、SERVLET API中forward() 与redirect()的区别?