[Lydsy1705月赛]挑战NP-Hard
挑战NP-Hard
题解
看到这道题的问法,感觉很奇怪,为什么要连续两个问呢?最后发现其实两个问是有关系的。
我们可以先暴力对所有的点进行染色,一个点的颜色即为所有相邻节点的mex,这样就可以染好色。
如果图上的颜色总数不超过k,那么第一问就有答案了。
否则我们就执行第二问,而图中由第k+1颜色的点到第1颜色的点的路径明显是一条目标路径,点互不相同。而对于颜色为i的点,它相邻点一定有一个颜色为i-1,否则它就是i-1颜色了,我们可以通过这种方式找出路径。
源码
挺好打的
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
using namespace std;
#define MAXN 20005
typedef long long LL;
int t,n,m,k;
int head[MAXN],col[MAXN],tot;
int from[MAXN],to[MAXN],nxt[MAXN];
int vis[MAXN],pos;
#define g

浙公网安备 33010602011771号