hdu 1571 模拟

来源:互联网 发布:锦绣未央网络首播量 编辑:程序博客网 时间:2024/06/07 03:14

注意初始化 有可能每次弄完之后队列中还保留有上一次的乘客 所以一定要清空队列或者直接在while循环里面定义队列

#include<stdio.h>#include<iostream>#include<vector>#include<set>#include<algorithm>#include<math.h>#include<queue>#include<deque>using namespace std;int mp[33][33],vis[33];int pos,res,n,k,t;int main(){    int n,ans;    char ss[10];    queue<int>q;    vector<int>head[33];    int u;    while(scanf("%d",&n))    {        if(!n)break;        while(!q.empty())q.pop();        for(int i=0;i<=n;++i){head[i].clear();vis[i]=0;}        pos=ans=res=0;        for(int i=0;i<n;++i)            for(int j=0;j<n;++j)                scanf("%d",&mp[i][j]);                   scanf("%d",&k);                for(int i=0;i<k;++i){            scanf("%s",ss);            if(ss[0]=='U'){                scanf("%d",&t);                if(pos==t||res==7)continue;                    res++;                    if(!vis[t]){                        q.push(t);                          vis[t]=1;                      }                          head[t].push_back(1);              }            else{                if(res==0)continue;                  u=q.front();                    q.pop();//                printf("u:%d\n",u);                                   res-=head[u].size();                      head[u].clear();                       vis[u]=0;                      ans+=mp[pos][u];                         pos=u;            }        }                printf("%d\n",ans);            }    return 0;}


0 0
原创粉丝点击