亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 1620.cpp

?? 這是哈爾濱工業大學acmOJ的源代碼
?? CPP
字號:
/*  This Code is Submitted by wywcgs for Problem 1620 on 2006-09-02 at 15:24:14 */ 
#include <cstdio>
#include <algorithm>
using namespace std;

const int AN = 32;
const int MP = 128, MB = 32;
const int SN = 1 << 20;
const int INF = 1 << 29;

class FibNode {
public:
	bool mark;
	int left, right, p, child;
	int degree, key, st;
	void set(int s, int k) { mark = false; left = right = st = s; p = child = -1; degree = 0; key = k; }
};

class FibHeap {
private:
	FibNode h[SN];
	bool pos[SN];
	int head, minH, size;
	void addToRootList(int);
	void eraseFromRootList(int);
	void link(int, int);
	void consolidate();
	void cut(int, int);
	void cascading(int);
public:
	void clear(int);
	bool isEmpty() const { return size == 0; }
	void insert(int, int);
	FibNode minNode() const { return h[minH]; }
	FibNode extractMin();
	void decreaseKey(int, int);
	void deleteE(int x) { decreaseKey(x, -INF); extractMin(); }
};
void FibHeap::addToRootList(int x) {
	if(head == -1) head = x;
	else {
		int a = h[head].right, b = h[x].left;
		h[head].right = x; h[x].left = head;
		h[b].right = a; h[a].left = b;
	}
}
void FibHeap::eraseFromRootList(int x) {
	if(x == h[x].right) head = -1;
	else {
		if(head == x) head = h[x].right;
		h[h[x].right].left = h[x].left;
		h[h[x].left].right = h[x].right;
	}
}
void FibHeap::link(int x, int y) {
	if(h[x].child == -1) { h[x].child = y; h[y].left = h[y].right = y; }
	else {
		int a = h[h[x].child].right;
		h[h[x].child].right = y; h[y].left = h[x].child;
		h[y].right = a; h[a].left = y;
	}
	h[y].p = x; h[y].mark = false; h[x].degree++;
}
void FibHeap::consolidate() {
	int a[AN], dlmt = 0;
	memset(a, -1, sizeof(a));
	while(head != -1) {
		int x = head; eraseFromRootList(x);
		int d = h[x].degree;
		h[x].p = -1;
		while(a[d] != -1) {
			int y = a[d];
			if(h[x].key > h[y].key) swap(x, y);
			link(x, y); a[d] = -1; d++;
		}
		a[d] = x; dlmt >?= d+1;
	}
	minH = -1;
	for(int i = 0; i < dlmt; i++) {
		if(a[i] == -1) continue;
		h[a[i]].left = h[a[i]].right = a[i];
		addToRootList(a[i]);
		if(minH == -1 || h[a[i]].key < h[minH].key) minH = a[i];
	}
}
void FibHeap::clear(int sn) {
	size = 0;
	head = minH = -1;
	memset(pos, false, sizeof(bool)*sn);
}
void FibHeap::insert(int x, int v) {
	h[x].set(x, v);
	addToRootList(x); size++;
	pos[x] = true;
	if(minH == -1 || h[minH].key > v) minH = x;
}
FibNode FibHeap::extractMin() {
	FibNode r = h[minH];
	int x = minH;
	if(h[x].child != -1) addToRootList(h[x].child);
	eraseFromRootList(x); size--;
	if(x == h[x].right) minH = -1;
	else consolidate();
	pos[r.st] = false;
	return r;
}
void FibHeap::decreaseKey(int x, int v) {
	if(!pos[x]) { insert(x, v); return; }
	else if(h[x].key <= v) return;
	h[x].key = v;
	int y = h[x].p;
	if(y != -1 && h[x].key < h[y].key) { cut(x, y); cascading(y); }
	if(v < h[minH].key) minH = x;
}
void FibHeap::cut(int x, int y) {
	if(x == h[x].right) h[y].child = -1;
	else {
		if(h[y].child == x) h[y].child = h[x].right;
		h[h[x].right].left = h[x].left;
		h[h[x].left].right = h[x].right;
		h[x].left = h[x].right = x;
	}
	h[y].degree--;
	addToRootList(x);
	h[x].p = -1; h[x].mark = false;
}
void FibHeap::cascading(int y) {
	int z = h[y].p;
	if(z == -1) return;
	else if(!h[y].mark) h[y].mark = true;
	else { cut(y, z); cascading(z); }
}

class Patch {
public:
	int pre, abs, fix, intro, cost;
	void build(int);
};
void Patch::build(int n) {
	char con[MB], fixed[MB];
	scanf("%d %s %s", &cost, con, fixed);
	pre = abs = fix = intro = 0;
	for(int i = 0; i < n; i++) {
		if(con[i] == '+') pre |= 1 << i;
		else if(con[i] == '-') abs |= 1 << i;
		if(fixed[i] == '-') fix |= 1 << i;
		else if(fixed[i] == '+') intro |= 1 << i;
	}
	fix ^= (1<<n)-1;
}

FibHeap heap;
Patch patch[MP];
int n, m, pop[SN] = { 0 };

int Dijkstra(int);

int main()
{
	for(int t = 1; scanf("%d %d", &n, &m) != EOF && n != 0; t++) {
		for(int i = 0; i < m; i++) patch[i].build(n);
		int time = Dijkstra(t);
		printf("Product %d\n", t);
		if(time == INF) printf("Bugs cannot be fixed.\n\n");
		else printf("Fastest sequence takes %d seconds.\n\n", time);
	}
	
	return 0;
}

int Dijkstra(int t)
{
	int sn = 1<<n, time = INF;
	heap.clear(sn); heap.insert(sn-1, 0);
	while(!heap.isEmpty()) {
		FibNode bug = heap.extractMin();
		pop[bug.st] = t;
		if(bug.st == 0) { time = bug.key; break; }
		for(int i = 0; i < m; i++)
			if((bug.st&patch[i].abs) == 0 && (bug.st&patch[i].pre) == patch[i].pre) {
				int st = (bug.st&patch[i].fix)|patch[i].intro;
				if(pop[st] == t) continue;
				heap.decreaseKey(st, bug.key+patch[i].cost);
			}
	}
	return time;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区日韩av| 亚洲午夜精品久久久久久久久| 欧美性受xxxx黑人xyx性爽| 成人动漫视频在线| caoporn国产精品| 国产999精品久久| 99久久免费视频.com| av在线一区二区| 在线精品视频免费观看| 日本道免费精品一区二区三区| 94色蜜桃网一区二区三区| www.日韩在线| 欧美亚一区二区| 日韩免费电影网站| 精品美女一区二区| 国产欧美精品日韩区二区麻豆天美| 久久久国产精华| ...av二区三区久久精品| 亚洲免费观看高清完整版在线观看熊| 一二三区精品视频| 免费在线成人网| 成人精品电影在线观看| 色视频成人在线观看免| 在线综合+亚洲+欧美中文字幕| 精品久久五月天| 国产精品超碰97尤物18| 午夜成人在线视频| 国产九色sp调教91| 欧美三级蜜桃2在线观看| 精品美女一区二区| 亚洲欧美二区三区| 美女视频一区在线观看| 成人h版在线观看| 欧美老肥妇做.爰bbww视频| 精品国产伦一区二区三区免费| 综合久久久久久| 另类欧美日韩国产在线| 色综合久久中文字幕| 精品日产卡一卡二卡麻豆| 亚洲精品乱码久久久久久久久 | 亚洲激情图片qvod| 日本aⅴ免费视频一区二区三区| 国产一区二区福利视频| 欧美日韩国产一级二级| 久久久久成人黄色影片| 午夜伊人狠狠久久| 99vv1com这只有精品| 精品av久久707| 首页欧美精品中文字幕| 97久久人人超碰| 国产日韩欧美高清在线| 人禽交欧美网站| 色哦色哦哦色天天综合| 日本一区免费视频| 狠狠色丁香婷婷综合| 欧美日韩一区二区三区在线| 亚洲私人影院在线观看| 国产毛片精品视频| 精品国产一区二区三区忘忧草 | 国产成人一区在线| 日韩一二在线观看| 午夜精品久久久久| 日本道免费精品一区二区三区| 中文字幕的久久| 国产麻豆成人精品| 欧美精品一区二区三区在线播放| 亚洲午夜羞羞片| 欧美午夜电影网| 一区二区免费视频| 色噜噜狠狠色综合中国| 亚洲精品欧美在线| 色av成人天堂桃色av| 亚洲欧美日韩系列| 91免费看视频| 一区二区久久久| 欧美私模裸体表演在线观看| 亚洲国产综合色| 欧美综合天天夜夜久久| 亚洲国产成人av好男人在线观看| 在线精品视频小说1| 亚洲一区二区三区四区不卡| 欧美性猛片aaaaaaa做受| 亚洲精品乱码久久久久久黑人| 色狠狠综合天天综合综合| 一区二区国产盗摄色噜噜| 欧美精品日韩精品| 美女免费视频一区| 国产午夜精品美女毛片视频| 懂色av一区二区三区蜜臀| 亚洲欧美综合另类在线卡通| 在线一区二区三区四区五区| 香蕉影视欧美成人| 精品国产免费一区二区三区香蕉| 国产精品99久| 一区二区三区精品久久久| 这里只有精品视频在线观看| 韩国在线一区二区| 亚洲欧美在线观看| 91精品国产入口在线| 国产真实精品久久二三区| 中文字幕一区视频| 欧美日韩1234| 国产黄色精品视频| 一区二区理论电影在线观看| 日韩精品一区二区三区在线观看 | 1区2区3区欧美| 欧美性一级生活| 国产精品亚洲成人| 亚洲一区在线视频观看| 欧美电影免费观看高清完整版在线观看 | 久久―日本道色综合久久| 懂色av中文一区二区三区| 亚洲午夜免费电影| 国产欧美一区二区三区网站| 精品视频999| 国产suv精品一区二区883| 日韩—二三区免费观看av| 日本一区二区三区dvd视频在线| 在线亚洲人成电影网站色www| 精品无码三级在线观看视频| 视频精品一区二区| 国产精品欧美一级免费| 欧美一区二区视频在线观看| 99久精品国产| 国产精品综合视频| 丝袜亚洲精品中文字幕一区| 国产精品国产精品国产专区不蜜| 日韩女优毛片在线| 欧美色网一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲成人自拍网| 成人欧美一区二区三区| 久久亚洲一级片| 日韩三级视频在线看| 欧美性生活一区| 91首页免费视频| 北岛玲一区二区三区四区| 狠狠网亚洲精品| 美女高潮久久久| 日本欧美加勒比视频| 亚洲一区二区三区四区不卡| 亚洲男人天堂av网| 国产欧美一区二区三区网站| 久久综合久久综合久久综合| 日韩欧美国产精品| 56国语精品自产拍在线观看| 欧美日精品一区视频| 色综合久久99| 91久久精品午夜一区二区| 99视频有精品| 91麻豆成人久久精品二区三区| 成人国产精品免费| 成人国产电影网| 99精品桃花视频在线观看| 97久久精品人人澡人人爽| av成人老司机| 在线亚洲+欧美+日本专区| 欧美在线短视频| 欧美日韩精品一二三区| 91麻豆精品国产91久久久资源速度| 欧美日韩精品是欧美日韩精品| 欧美日韩aaaaaa| 精品日韩欧美一区二区| 国产日韩欧美精品一区| 亚洲欧洲av另类| 亚洲成人激情综合网| 日韩国产精品久久| 国产综合成人久久大片91| 成人手机电影网| 91成人在线免费观看| 欧美一区永久视频免费观看| 欧美mv日韩mv国产网站app| 久久亚洲精华国产精华液| 国产精品国产a级| 亚洲成人在线免费| 久久超碰97中文字幕| 国产精品 日产精品 欧美精品| 96av麻豆蜜桃一区二区| 欧美精品丝袜中出| 亚洲精品在线三区| 中文字幕色av一区二区三区| 亚洲国产精品久久久久秋霞影院| 日本va欧美va精品| 不卡欧美aaaaa| 4438x成人网最大色成网站| 久久久精品2019中文字幕之3| 亚洲三级理论片| 青青草91视频| 99精品久久久久久| 欧美成人精品福利| 亚洲欧美成人一区二区三区| 久久99精品国产麻豆不卡| 99精品桃花视频在线观看| 欧美一区二区三区性视频| 亚洲欧洲无码一区二区三区| 美女一区二区三区在线观看| 99久久精品国产观看| 久久亚洲二区三区| 天天色综合天天| 色综合av在线|