
【图论】
欣君
追寻那如樱花般的绚烂
展开
-
51nod 1445 变色DNA
刷了好久奇奇怪怪的数学题,终于有一道正常的图论题了,好激动啊。。。。 如果 colormap[i][j] 为'Y',要使狼能在某天,从 i 颜色变为 j 颜色,那么 colormap[i][0]~colormap[i][j-1] 间,有多少个‘Y’,那么 i 到 j 的边权值就是多少。 如果 colormap[i][j] 为'N',则为正无穷大。 然后求起点到终点的最短路径就行。因为数据范围原创 2016-11-07 23:34:27 · 266 阅读 · 0 评论 -
51nod 1366 贫富差距
先用并查集判断所有节点是否在同一集合内。如果不是,输出-1。 然后求图中最远两点的距离即可。 #include using namespace std; const int N=55; int n,fa[N],vis[N]; char mz[N][N]; int findfa(int x) { return fa[x]==x?x:fa[x]=findfa(fa[x]); } int b原创 2016-11-10 20:30:17 · 294 阅读 · 0 评论 -
51nod 1076 2条不相交的路径
江老板说tarjan模板题,然后就抄了板子,其实并不懂为什么。。。。 #include using namespace std; const int N=26000; const int M=50050; int e[M][2],cut[M],g[N],v[M<<1],nxt[M<<1],ed; int f[N],dfn[N],low[N],num,cnt,from[N]; void add(原创 2016-11-18 00:21:48 · 315 阅读 · 0 评论 -
CCCC天梯赛 L3-014. 周游世界
本质是个dijkstra的裸题,但是特别的烦。。。。 由于图很复杂,所以不要一开始就将所有可相互到达的点连边,而是在dijkstra跑的时候,查询bus路线,再连边。 然后压入优先队列的时候,以及弹出的时候,要判断下是否比当前最优解差,是的话就continue。 因为要输出路径,所以还有存from节点。 总之,特别的烦。。。 #include using namespace std;原创 2017-03-28 18:03:47 · 1127 阅读 · 0 评论 -
CCCC天梯赛 L3-015. 球队“食物链”
哈密顿回路问题,很经典。(但弱鸡的我,第一次做哈密顿回路的题。。。。) 这题有坑,比赛的时候被坑了两个点,6分WA掉了。 比赛采用主客场双循环赛制,也就是说,可能出现A赢了B,B也赢了A,或者A输给了B,B也输给了A的情况。 神坑。。。 然后单纯的dfs,会T。比赛的时候8分T掉了。。。 首先,因为要输出字典序最小。因此,可以直接从1开始搜索。如果搜不到,那么从其他点也是搜不到的。 然原创 2017-03-28 18:56:05 · 629 阅读 · 0 评论 -
HDU 6041 I Curse Myself
由于每条边最多只在一个环上,因此可以将环上的边权值,构成一个集合。问题就变成了,从若干个集合中,每个集合取一个数,计算K大的总和。 一次性考虑所有集合不太容易,可以将集合依次合并过去。那样复杂度就是O(KM)。 #include using namespace std; const int MAXN=1010; const int MAXM=4020; struct Edge { int原创 2017-07-26 14:53:17 · 930 阅读 · 0 评论