WA11个点(官网)求助
查看原帖
WA11个点(官网)求助
756716
Size_OIer楼主2023/7/21 08:01

用的01BFS,不知道为什么WA了11个点

#include<bits/stdc++.h>
using namespace std;
const int maxn=200000+5;
struct node{
	int id,tp,w;
	node(int _tp,int _id,int _w){
		tp=_tp;
		id=_id;
		w=_w;
	}
};
struct road{
	int to,id;
	road(int _to,int _id){
		to=_to;
		id=_id;
	}
};
int n,m;
int ans=-1;
bool vis[maxn];
vector<road> e[maxn];
deque<node> q;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		int u,v,id;
		scanf("%d%d%d",&u,&v,&id);
		e[u].push_back(road(v,id));
		e[v].push_back(road(u,id));
	}
	q.push_front(node(1,-1,0));
	while(!q.empty()){
		node now=q.front();
		q.pop_front();
		int u=now.tp;
		if(u==n) {
			ans=now.w;
			break;
		}
		if(vis[u]) continue;
		vis[u]=true;
		for(auto v:e[u]){
			if(!vis[v.to]){
			 	if(v.id==now.id) q.push_front(node(v.to,v.id,now.w));
				else q.push_back(node(v.to,v.id,now.w+1));
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}
2023/7/21 08:01
加载中...