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

MC0487宝玉的考验

码蹄杯前的最后一题,可能也是算法竞赛生涯最后一篇博客了

题意:

#include<bits/stdc++.h> #define int long long #define fi first #define se second #define endl '\n' using namespace std; typedef pair<int,int> pii; const int N=1e6+10; const int mod=998244353; vector<int>pm; int judge[N],nm[N],inv[N]; int Log2[N]; int kmi(int a,int b){ int res=1; while(b){ if(b&1) res=res*a%mod; a=a*a%mod; b>>=1; } return res; } void init(){ nm[0]=inv[0]=1; for(int i=1;i<=1e6;i++){ nm[i]=nm[i-1]*i%mod; inv[i]=kmi(nm[i],mod-2); } } void euler(int n){ judge[1]=1; for(int i=2;i<=n;i++){ if(!judge[i]){ pm.push_back(i); } for(int j=0;pm[j]*i<=n;j++){ judge[pm[j]*i]=1; if(i%pm[j]==0) break; } } } int C(int a,int b){ return nm[a]*inv[a-b]%mod*inv[b]%mod; } struct nod{ int dis,st,u; bool operator<(const nod& b)const{ return dis>b.dis; } }; void solve(){ int n,m,k,t;cin>>n>>m>>k>>t; vector<vector<pii> >g(n+10); for(int i=1;i<=m;i++){ int u,v,w;cin>>u>>v>>w; g[u].push_back({v,w}),g[v].push_back({u,w}); } vector<int>id(n+10); for(int i=1;i<=k;i++){ int u;cin>>u; id[u]=i; } vector<int>pre(n+10); for(int i=1;i<=t;i++){ int x,y;cin>>x>>y; int kt=id[x]; pre[y]|=(1<<(kt-1)); } priority_queue<nod>q; int k1=id[1],st1=0; if(k1) st1=(1<<(k1-1)); q.push({0,st1,1}); vector<vector<int> >dis(n+10,vector<int>((1<<k),1e18)); dis[1][st1]=0; vector<vector<int> >vis(n+10,vector<int>(1<<k)); while(q.size()){ auto [d,stu,u]=q.top(); q.pop(); if(vis[u][stu]) continue; vis[u][stu]=1; for(auto [v,w]:g[u]){ int st=0; if(id[v]) st=pre[v]; bool ok=1; for(int bit=0;bit<k;bit++){ if((st>>bit)&1){ if(((stu>>bit)&1)==0) ok=0; } } if(!ok) continue; int nowk=0; if(id[v]) nowk=(1<<(id[v]-1)); int nxst=(stu|nowk); if(vis[v][nxst]) continue; if(dis[v][nxst]>d+w){ dis[v][nxst]=d+w; q.push({dis[v][nxst],nxst,v}); } } } int ans=1e18; for(int msk=0;msk<(1<<(k));msk++){ ans=min(ans,dis[n][msk]); } if(ans>1e17){ cout<<"impossible"; } else cout<<ans; cout<<endl; } signed main(){ ios::sync_with_stdio(0);cin.tie(0); // for(int i=2;i<=1e6;i++){ // Log2[i]=Log2[i/2]+1; // } int T=1;cin>>T; while(T--) solve(); return 0; }
http://www.jsqmd.com/news/1319470/

相关文章:

  • 如何用BiliTools的AI智能总结功能快速掌握B站视频精华内容
  • 3大核心优势:Windows Btrfs驱动完整指南与深度实践
  • 储能系统在电力调峰中的容量优化与Matlab实现
  • 广州全域优质回收门店公示,精准甄选靠谱渠道安心变现 - 日常比对手册
  • 企业级Redis高可用实战:TongRDS与哨兵模式部署指南
  • 2026年福建建筑工程中埋式止水带挑选攻略 博力橡塑等企业情况梳理 - 八方八方
  • HFSS仿真核心:材料属性三要素设置与工程实践指南
  • ComfyUI-Manager完全指南:5分钟打造你的AI绘画节点管理神器
  • 抖音内容高效归档:从链接解析到智能管理的完整工作流
  • AMD RX5700XT运行本地Ollama
  • 2026杭州卵圆孔未闭保险拒赔维权途径与理赔指导 - 云间寄笔
  • 2026年高录用率学术会议投稿指南与EI检索解析
  • Claude服务中断启示:构建本地AI备份与混合架构实践指南
  • 风格一致性难题全解析,深度解读AI插画中LoRA微调、Reference Only与Style Embedding协同机制
  • N_m3u8DL-CLI-SimpleG:让M3U8视频下载变得如此简单
  • 3步快速搞定PMX转VRM:Blender插件完整教程
  • Unity ECS框架EcsRx实战:响应式编程与数据驱动架构解析
  • Web UI自动化入门:从元素定位到浏览器操作实战指南
  • 当 75% 红线压下来:国产 GPU 从“能用“到“真替真用“的账本
  • 抖音无水印下载终极指南:三步轻松保存高清内容
  • 大模型提示约束回归审计工具:从输入校验到离线报告的完整实现
  • 如何快速掌握Mission Planner:无人机地面站软件的完整实战指南
  • 2026韶关律所怎么选?这份本土实力派测评与避坑指南请收好 - 余生黄金回收
  • 物联网实战:基于ONENET与MQTT协议快速实现设备数据上云与可视化
  • AI竞品专利墙正在加速筑高:深度解析2024上半年全球AI领域TOP20专利布局图谱(含技术空白点与突围机会点)
  • 统信 UOS、银河麒麟备授课工具对比:WPS、希沃、讯飞、智演家
  • OBS Studio色彩校正系统:从技术原理到专业应用实践
  • 看完就会:AI论文平台测评与最新推荐
  • NR37-CP的60dB AEC上限与系统级回音返回损耗的折算分析
  • Unity+Photon FPS联机开发:从零搭建多人射击游戏网络环境