当前位置: 首页 > news >正文

调不出来的问题记录(链式前向星+拓扑排序)

调了好长时间,给我调哈气了。
要么是内存超限、数组越界,就是WA,样例都过了。
原题:西邮第五届ACM校赛-B烦人的依赖
参考

#include <bits/stdc++.h>
#define forr(i,l,r) for(int i=l;i<=r;i++)
#define reforr(i,l,r) for(int i=r;i>=l;i--)
#define int long long
#define pii pair<int,int>
#define endl '\n'
#define PI 3.14159265
using namespace std;
const int N=3e4+10,M=1e5+10;//3e4开二维数组太大了 链式前向星存储
int head[N],deg[N];
char c[N];
int cnt,ca=1;;
struct Edge{
    int to,nxt;
}edge[M];


void addedge(int u,int v){
    
    edge[cnt].to=v;
    edge[cnt].nxt=head[u];//链接u的上一个邻居
    head[u]=cnt++;//记录本次邻居位置
}
void solve(){
    cnt=0;
    memset(head,-1,sizeof head);
    memset(deg,0,sizeof deg);
    unordered_map<char,int>rec;
    int n,m;cin>>n>>m;
    // vector<int>deg(n+10,0);
    // vector<char>c(n+10);
    forr(i,1,n){
        cin>>c[i];
        rec[c[i]]=i;//给字母编号
    }
    char u,v;
    forr(i,1,m){
        cin>>u>>v;
        int nu=rec[u],nv=rec[v];
        addedge(nu,nv);
        deg[nv]++;
    }
    
    //bfs
    priority_queue<char,vector<char>,greater<char>>q;
    forr(i,1,n)
        if(!deg[i])q.push(c[i]);
    
    vector<char>ans;
    while(!q.empty()){
        char now=q.top();
        q.pop();
        ans.push_back(now);//加入答案
        //找邻居
        int ni=rec[now];
        for(int i=head[ni];i!=-1;i=edge[i].nxt){
            int nb=edge[i].to;
            deg[nb]--;
            if(!deg[nb])q.push(c[nb]);//如果入度成了0
        }
    }
    cout<<"Case #"<<ca++<<":"<<endl;
    if(ans.size()!=n)cout<<"Impossible"<<endl;
    else{
        for(auto i:ans)cout<<i<<endl;
    }
}
signed main()
{
//     ios::sync_with_stdio(false), std::cin.tie(nullptr), std::cout.tie(nullptr);
    int _ ;
    _ = 1;
    cin>>_;
    while (_--)
    {
        
        solve();
    }
    return 0;
}

相关文章:

  • CFD中的动量方程非守恒形式详解
  • MTK Android12-13 -Intent Filter Verification Service 停止运行
  • 深度学习之线性代数基础
  • 算法——BFS
  • SQL Server 2014 利用SubString获取Json格式指定字段数据
  • 微信小程序无缝衔接弹幕效果纯CSS
  • JAVA Web_定义Servlet2_学生登录验证Servlet
  • 005_多表查询
  • 在Vue 中如何使用动态样式
  • asp.net Kestrel 和iis区别
  • 基于OpenCV与PyTorch的智能相册分类器全栈实现教程
  • 耘想WinNAS:以聊天交互重构NAS生态,开启AI时代的存储革命
  • 【后端开发】Spring配置文件
  • ubuntu22.04-VMware Workstation移动后无法连接网络
  • 【视频目标分割论文集】Efficient Track Anything0000
  • 【深度学习与大模型基础】第11章-Bernoulli分布,Multinoulli分布
  • LeetCode 热题 100_单词拆分(86_139_中等_C++)(动态规划)
  • 【从C到C++的算法竞赛迁移指南】第五篇:现代语法糖精粹 —— 写出优雅的竞赛代码
  • 豪越消防一体化安全管控平台:构建消防“一张图”新生态
  • Java Web 300问
  • 重庆市委原常委、政法委原书记陆克华被决定逮捕
  • 中国创面修复学科发起者之一陆树良教授病逝,享年64岁
  • 江西省市场监管局原局长谢来发被双开:违规接受旅游活动安排
  • 超新星|罚丢点球的那道坎,刘诚宇靠自己迈了过去
  • 尹锡悦涉嫌发动内乱案举行第三次庭审
  • 普京提议恢复直接谈判,泽连斯基:望俄明日停火,乌愿谈判