最近比较懒,一种方法A了以后不想再去学习别的方法,诶,需要调整本题:邻接表 + bfs +优先队列 32MS还行View Code #include<stdio.h>#include<string.h>#include<queue>using namespace std;#define INF 100000000#define maxn 103#define maxm 10003struct node{ int c, l, w; node(int cc,int ll,int ww):c(cc),l(ll),w(ww) {} friend bool opera Read More
posted @ 2012-07-28 15:22 To be an ACMan Views(227) Comments(0) Diggs(0)
把每种颜色看做是图的顶点,然后判定是否满足欧拉回路的条件,用并查集来判断图的各个点是否连通(即是否只用一颗树),用字典树记录颜色编号。1.字典树:本题数据比较大,有50W种颜色,如果用STL的map来记录颜色或人工处理的话都会超时(平均O(n/2));所以我们用字典树来记录颜色的编号(平均O(lgn)),大大节约了时间。2.欧拉回路判定:本题显然是单向图,用d[]数组来统计每种颜色的度,满足欧拉回路的条件:顶点的度为奇数的个数只能是2或0,其它点的度必须都为偶数;3.并查集:用并查集来判断图的各个点是否连通(即是否只用一颗树);View Code #include<stdio.h> Read More
posted @ 2012-07-28 11:25 To be an ACMan Views(221) Comments(0) Diggs(0)