ECNU 3462. 最小 OR 路径 [dfs+枚举]

题意:给你n个点,m条边,起点s与终点e,求s到e的路径最小或和。

题解:从大到小贪心枚举每一个位,看是否能通过不包含这个位的路径到达终点,若能则可以删除这个位的贡献,由于每次dfs只需要遍历所有未到达的边所以,时间复杂度为O(62*(m))。

AC代码:

#include
#include
#include
using namespace std;
typedef long long ll;
struct node
{
	ll v,w,id;
	node(){}
	node(ll v,ll w,ll id)
	{
		this->v=v;
		this->w=w;
		this->id=id;
	}
};
vectorvt[10005];
ll s,e;
ll mark[1000005];
ll now;
ll dfs(ll u)
{
	if(u==e)return 1;
	for(ll i=0;i=0;i--)
		{
			if(!(haha&f[i]))
			{
				ans-=f[i];
				continue;
			}
			for(ll j=0;j


你可能感兴趣的:(dfs)