主题库和本地能AC,CF的双倍经验MLE
  • 板块灌水区
  • 楼主hgckythgcfhk
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/11/13 19:02
  • 上次更新2023/11/13 20:45:29
查看原帖
主题库和本地能AC,CF的双倍经验MLE
692274
hgckythgcfhk楼主2023/11/13 19:02

主题库

CF

#include<bits/stdc++.h>
using namespace std;const unsigned N=3011,B=(1<<12)-1;
#define void inline void
#define int register unsigned
vector<unsigned short>a[N];unsigned b[N],id[1<<24],cnt=~0,f,r,q[1<<24],d[1<<24],pre[1<<24];bitset<1<<24>c;
#define add(u,v) a[u].emplace_back(v)
#define ADD(u,v) b[++cnt]=u<<12|v,id[b[cnt]]=cnt
void print(int p){if(p)print(pre[p]);cout<<(q[p]&B)<<' ';}
signed main(){ios::sync_with_stdio(0);int n,m,k;cin>>n>>m>>k;
	while(m--){int u,v;cin>>u>>v;add(u,v),add(v,u);}
	while(k--){int u,v,w;cin>>u>>v>>w;ADD(u,v),ADD(v,w);}//cerr<<b[2]<<' '<<b[3]<<'\n';
	q[0]=1;while(f<=r){int t=q[f],dis=d[f],p=f,u=q[f++]&B;//cerr<<t<<' '<<q[pre[p]]<<'\n';
		if(u==n)return cout<<dis<<'\n',print(p),0;
		for(int i=0;i<a[u].size();++i){int v=a[u][i],e;e=u<<12|v;
			if(b[id[e]^1]==t||c[e])continue;c[e]=1,q[++r]=e,d[r]=dis+1,pre[r]=p;
		}
	}
}

CF上第一个点就炸了,但本地没有任何问题

2023/11/13 19:02
加载中...