c++ Stake 和 queue的用法

    xiaoxiao2024-07-26  11

    写篇博客,以免忘记。

    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 2147483647 using 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

    转载请注明原文地址: https://ju.6miu.com/read-1291054.html
    最新回复(0)