USACO 3.2 Sweet Butter
2011-05-27 21:36
218 查看
这个题时间是个大问题,用heap优化的迪杰斯特拉过的。
TASK: butter
LANG: C++
Compiling...
Compile: OK
Executing...
Test 1: TEST OK [0.000 secs, 12192 KB]
Test 2: TEST OK [0.000 secs, 12192 KB]
Test 3: TEST OK [0.000 secs, 12192 KB]
Test 4: TEST OK [0.000 secs, 12192 KB]
Test 5: TEST OK [0.000 secs, 12192 KB]
Test 6: TEST OK [0.000 secs, 12192 KB]
Test 7: TEST OK [0.027 secs, 12192 KB]
Test 8: TEST OK [0.108 secs, 12192 KB]
Test 9: TEST OK [0.135 secs, 12192 KB]
Test 10: TEST OK [0.135 secs, 12192 KB]
All tests OK.
TASK: butter
LANG: C++
Compiling...
Compile: OK
Executing...
Test 1: TEST OK [0.000 secs, 12192 KB]
Test 2: TEST OK [0.000 secs, 12192 KB]
Test 3: TEST OK [0.000 secs, 12192 KB]
Test 4: TEST OK [0.000 secs, 12192 KB]
Test 5: TEST OK [0.000 secs, 12192 KB]
Test 6: TEST OK [0.000 secs, 12192 KB]
Test 7: TEST OK [0.027 secs, 12192 KB]
Test 8: TEST OK [0.108 secs, 12192 KB]
Test 9: TEST OK [0.135 secs, 12192 KB]
Test 10: TEST OK [0.135 secs, 12192 KB]
All tests OK.
/* PROG: butter ID: jiafeim1 LANG: C++ */ #include <stdio.h> #include <string.h> #define MAXINT 100000000 int cow_count; int heap_size; int value_heap[805]; int id_heap[805]; int heap_clue[805]; int cows[805]; int road_to[805][1455]; int road_cost[805][1455]; int road_count[805]={0}; int res[805]={0}; bool haveGo[805]; void heap_swap(int i ,int j) { int temp; temp = value_heap[i]; value_heap[i]=value_heap[j]; value_heap[j] = temp; heap_clue[id_heap[i]]=j; heap_clue[id_heap[j]]=i; temp = id_heap[i]; id_heap[i]=id_heap[j]; id_heap[j] = temp; } void heap_up(int i) { while(i>0 && value_heap[i]<value_heap[(i-1)/2]) { heap_swap(i,(i-1)/2); i=(i-1)/2; } } void heap_down(int j) { bool haveDo; do { haveDo = false; int left = 2*j+1; int right = 2*j+2; if(right<heap_size && value_heap[right]<value_heap[j] && value_heap[right]<value_heap[left]) { heap_swap(j,right); j = right; haveDo = true; continue; } if(left<heap_size && value_heap[left]<value_heap[j]) { heap_swap(j,left); j = left; haveDo = true; continue; } }while(haveDo); } int main() { FILE *fin = fopen("butter.in", "r"); FILE *fout = fopen("butter.out", "w"); int n,p,c; fscanf(fin,"%d%d%d",&n,&p,&c); for(int i = 0;i<n;++i) { fscanf(fin,"%d",&(cows[i])); --cows[i]; } int t1,t2,tc; for(int i=0;i<c;++i) { fscanf(fin,"%d%d%d",&t1,&t2,&tc); --t1; --t2; road_cost[t1][road_count[t1]]=tc; road_to[t1][road_count[t1]]=t2; ++road_count[t1]; road_cost[t2][road_count[t2]]=tc; road_to[t2][road_count[t2]]=t1; ++road_count[t2]; } for(int co = 0;co<n;++co) { int nowCo = cows[co],curid; heap_size = p; for(int ba=0;ba<p;++ba) { value_heap[ba] = MAXINT; id_heap[ba] = ba; heap_clue[ba] = ba; } memset(haveGo,false,p*sizeof(bool)); value_heap[nowCo] = 0; heap_up(nowCo); for(int ba=0;ba<p;++ba) { curid = id_heap[0]; haveGo[curid] = true; heap_swap(0,heap_size-1); --heap_size; heap_down(0); for(int side = 0;side<road_count[curid];++side) { int curSideTo = road_to[curid][side]; if(!haveGo[curSideTo] && value_heap[heap_clue[curSideTo]]>value_heap[heap_clue[curid]]+road_cost[curid][side]) { value_heap[heap_clue[curSideTo]] = value_heap[heap_clue[curid]]+road_cost[curid][side]; heap_up(heap_clue[curSideTo]); } } } for(int i = 0;i<p;++i) { res[i]+=value_heap[heap_clue[i]]; } } int tempMin = MAXINT; for(int i = 0;i<p;++i) { if(res[i]<tempMin) { tempMin = res[i]; } } fprintf(fout,"%d\n",tempMin); fclose(fin); fclose(fout); return 0; }
相关文章推荐
- [USACO3.2]Sweet Butter
- USACO Section 3.2 Sweet Butter(SPFA)
- 【USACO 3.2】Sweet Butter(最短路)
- USACO 3.2 Sweet Butter (butter)
- USACO Section 3.2 Sweet Butter - 还是SPFA好使..
- Sweet Butter_usaco3.2_spfa
- [USACO3.2]香甜的黄油 Sweet Butter
- USACO-Section 3.2 Sweet Butter(最短路[Dijkstra])
- USACO-Section3.2 Sweet Butter【Dijkstra算法】
- USACO 3.2 Sweet Butter(SPFA)
- USACO Section 3.2: Sweet Butter
- USACO 3.2 Sweet Butter 香甜的黄油 (Bellman DIJ SPFA)
- SSL-1693 USACO 3.2 Sweet Butter 香甜的黄油 (Bellman DIJ SPFA)
- USACO Section 3.2 Sweet Butter (butter)
- USACO 3.2 Sweet Butter
- usaco-3.2-msquare-pass
- usaco-3.2-butter-passed
- dijkstra+堆优化 USACO 3.2.6 Sweet Butter
- USACO Section 3.2 Magic Squares(BFS)
- USACO section 3.2 Sweet Butter(SPFA)