青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我希望你是我獨家記憶

一段永遠封存的記憶,隨風而去
posts - 263, comments - 31, trackbacks - 0, articles - 3
   :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

P1511

Posted on 2008-09-05 19:28 Hero 閱讀(183) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
  1 //1511 Accepted 196124K 4141MS C++ 4292B PKU
  2 
  3 //堆優化的鄰接鏈表形式的最短路徑
  4 //注意Heap_Dijkstra( 1, 0 )而不是(1, inn)
  5 
  6 #include <stdio.h>
  7 #include <stdlib.h>
  8 #include <string.h>
  9 
 10 
 11 const int size = 1010010 ;
 12 const long long INF = 10000000000000 ;
 13 
 14 struct NODE
 15 {
 16     int num ;
 17     long long len ;
 18     struct NODE *next ;
 19 
 20     //NODE() { len = INF ; next = NULL ; }
 21 };
 22 //struct NODE head[size*90] ;
 23 struct NODE head1[size*10] ;
 24 struct NODE head2[size*10] ;
 25 int chead ;
 26 
 27 struct EDGE
 28 {
 29     int sn ; int en ; long long len ; int toheap ;
 30 };
 31 struct EDGE dist1[size] ;
 32 struct EDGE dist2[size] ;
 33 //typedef struct EDGE EDGE ;
 34 
 35 int flag[size] ;
 36 int heap[size] ; int numh ;
 37 
 38 int inn, inm ; int innum ;
 39 long long out ;
 40 
 41 void input()
 42 {
 43     forint i=0; i<=inn; i++ ) head1[i].next = head2[i].next = NULL ;
 44 
 45     int sn, en, len ; chead = inn + 10 ; struct NODE *temp ;
 46     forint i=1; i<=inm; i++ )
 47     {
 48         scanf( "%d %d %d"&sn, &en, &len ) ;
 49         //data[i][0] = sn ; data[i][1] = en ; data[i][2] = len ;
 50         //temp = (struct NODE *)malloc( sizeof(NODE) ) ;
 51         //struct NODE *temp = new NODE ;
 52         temp = &head1[chead++] ;
 53         temp->len = len ; temp->num = en ;
 54         temp->next = head1[sn].next ; head1[sn].next = temp ;
 55 
 56         //temp = (struct NODE *)malloc( sizeof(NODE) ) ;
 57         temp = &head2[chead++] ;
 58         temp->len = len ; temp->num = sn ;
 59         temp->next = head2[en].next ; head2[en].next = temp ;
 60     }
 61 }
 62 
 63 void swap( int &a, int &b )
 64 {
 65     int t = a ; a = b ; b = t ;
 66 }
 67 
 68 void moveup( EDGE *arry, int n )
 69 {//將新加入的節點向上移動來維持堆,n表示要向上移動的點的坐標
 70     //while( n && arry[n] > arry[(n-1)>>1] )//大頂堆
 71     while( n&&arry[heap[n]].len<arry[heap[(n-1)/2]].len )//小頂堆
 72     {
 73         swap( arry[heap[n]].toheap, arry[heap[(n-1)/2]].toheap ) ;
 74         swap( heap[n], heap[(n-1)/2] ) ;
 75         n = (n-1/ 2 ;
 76     }
 77 }
 78 
 79 void movedown( EDGE *arry, int n )
 80 {//堆頂改變后,將其向下移動維持堆,n表示堆中元素總數目
 81     int i = 0 ;
 82     while( i+i+1 < n )
 83     {
 84         //if( i+i+2<n&&arry[i+i+2]>arry[i+i+1]&&arry[i+i+2]>arry[i] )
 85         if( i+i+2<n&&arry[heap[i+i+2]].len<arry[heap[i+i+1]].len&&arry[heap[i+i+2]].len<arry[heap[i]].len )
 86         {
 87             swap( arry[heap[i+i+2]].toheap, arry[heap[i]].toheap ) ;
 88             swap( heap[i+i+2], heap[i] ) ;
 89             i = i + i + 2 ;
 90         }
 91         //else if( arry[i+i+1] > arry[i] )
 92         else if( arry[heap[i+i+1]].len < arry[heap[i]].len )
 93         {
 94             swap( arry[heap[i+i+1]].toheap, arry[heap[i]].toheap ) ;
 95             swap( heap[i+i+1], heap[i] ) ; 
 96             i = i + i + 1 ;
 97         }
 98         else break ;
 99     }
100 
101 }
102 
103 void Heap_Dijkstra( EDGE dist[], NODE head[], int sn, int en )
104 {
105     numh = -1 ; struct NODE * p ;
106     forint i=1; i<=inn; i++ )
107     {
108         if( i == sn )
109         {
110             flag[i] = 1 ; //pren[i] = -1 ;
111             dist[i].sn = sn ; dist[i].en = sn ; dist[i].len = 0 ;
112             heap[++numh] = i ; dist[i].toheap = numh ; moveup( dist, numh ) ;
113         }
114         else
115         {
116             flag[i] = 0 ; //pren[i] = sn ;
117             dist[i].sn = sn ; dist[i].en = i ;
118             //for( p=head[sn].next; p!=NULL&&p->num!=i; p=p->next ) ;
119             //if( NULL == p )    dist[i].len = INF ; else dist[i].len = p->len ;
120             dist[i].len = INF ;
121             heap[++numh] = i ; dist[i].toheap = numh ; moveup( dist, numh ) ;
122         }
123     }//init
124     forint ct=1; ct<=inn; ct++ )
125     {
126         if( numh < 0 )    break ;
127         int next = dist[heap[0]].en ; if( dist[next].len >= INF )    break ;
128         if( next == en )    return ;
129         swap( dist[heap[0]].toheap, dist[heap[numh]].toheap ) ;
130         swap( heap[0], heap[numh] ) ; numh-- ; movedown( dist, numh+1 ) ;
131         flag[next] = 1 ; int curn ; 
132         for( p=head[next].next; p; p=p->next )
133         {
134             curn = p->num ;
135             if0==flag[curn]&&p->len<INF&&dist[next].len+p->len<dist[curn].len )
136             {
137                 dist[curn].len = dist[next].len + p->len ; //pren[curn] = next ;
138                 moveup( dist, dist[curn].toheap ) ;
139             }
140         }
141     }
142 }
143 
144 void process()
145 {
146     out = 0 ;
147 
148     Heap_Dijkstra( dist1, head1, 10 ) ;
149     forint i=1; i<=inn; i++ ) out += dist1[i].len ;
150 
151     Heap_Dijkstra( dist2, head2, 10 ) ; 
152     forint i=1; i<=inn; i++ ) out += dist2[i].len ;
153 }
154 
155 void output()
156 {
157     printf( "%lld\n"out ) ;
158 }
159 
160 int main()
161 {
162     //freopen( "in.txt", "r", stdin ) ;
163     //freopen( "out.txt", "w", stdout ) ;
164 
165     //while( scanf( "%d", &innum ) != EOF )
166     scanf( "%d"&innum ) ;
167     {
168         forint ct=1; ct<=innum; ct++ )
169         {
170             scanf( "%d %d",&inn, &inm ) ;
171 
172                 input() ;
173 
174                 process() ;
175 
176                 output() ;
177         }
178     }
179 
180     return 0 ;
181 }
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精品久久久久久久久久久久久 | 免费久久99精品国产自| 欧美大学生性色视频| 香蕉久久夜色精品国产使用方法| 国产亚洲综合精品| 欧美体内she精视频| 欧美成人小视频| 国产一区二区三区四区老人| 黄色日韩精品| 亚洲国产毛片完整版| 久久一区二区三区四区| 欧美天天在线| 国产欧美视频一区二区| 国产日韩亚洲欧美精品| 国内成人精品2018免费看 | 中日韩高清电影网| 亚洲高清视频一区二区| 亚洲精品欧美日韩专区| 99视频+国产日韩欧美| 欧美精品一区二区三区在线播放 | 亚洲国产综合91精品麻豆| 最新69国产成人精品视频免费| 亚洲色无码播放| 久久久九九九九| 欧美日韩免费一区二区三区视频| 国产欧美日韩免费看aⅴ视频| 1024亚洲| 午夜精品久久久久久久蜜桃app| 免费成年人欧美视频| 一本色道久久加勒比88综合| 久久久精品国产99久久精品芒果| 欧美特黄一区| 亚洲欧洲在线一区| 久久成人18免费观看| 亚洲国产精品久久| 久久er精品视频| 国产精品久久久久久久久久免费| 尤物99国产成人精品视频| 亚洲欧美国产77777| 欧美二区在线观看| 欧美一区二区视频在线观看| 欧美午夜片在线观看| 亚洲激情一区二区三区| 久久理论片午夜琪琪电影网| 亚洲天堂成人在线视频| 欧美日韩高清在线播放| 亚洲国产精品免费| 久久综合国产精品台湾中文娱乐网| 一区二区三区国产精华| 欧美乱人伦中文字幕在线| 亚洲二区在线| 美国十次了思思久久精品导航| 亚洲欧美日韩国产中文 | 国产精品s色| 亚洲伦理精品| 亚洲高清一区二区三区| 久久天天狠狠| 国产亚洲网站| 久久久久久久波多野高潮日日 | 亚洲经典三级| 欧美在线视频网站| 9国产精品视频| 日韩五码在线| 麻豆成人综合网| 国产原创一区二区| 欧美韩国在线| 欧美大片免费久久精品三p| 亚洲国产精品视频一区| 久久久久久综合| 国产麻豆日韩| 99精品视频免费| 美女尤物久久精品| 久久精品一区蜜桃臀影院| 国产亚洲精品久久久久动| 久久av一区二区三区| 一区福利视频| 亚洲精品视频二区| 国产偷国产偷亚洲高清97cao| 国内精品久久久久影院色 | 欧美不卡在线视频| 亚洲欧美在线高清| 欧美成人一区二区在线| 国产精品盗摄久久久| 亚洲成人在线观看视频| 亚洲高清二区| 亚洲第一在线综合网站| 久久久www成人免费精品| 免费人成网站在线观看欧美高清| 亚洲欧美一区二区激情| 欧美日韩高清区| 亚洲欧美精品| 久久蜜臀精品av| 亚洲国产精品第一区二区三区 | 欧美午夜剧场| 亚洲欧美视频在线观看视频| 亚洲国产精品一区二区第一页| 亚洲女性裸体视频| 国产精品对白刺激久久久| 日韩亚洲欧美综合| 欧美自拍偷拍午夜视频| 日韩西西人体444www| 亚洲欧美视频在线观看| 国产精品视频男人的天堂| 久久se精品一区精品二区| 亚洲大胆美女视频| 欧美在线免费视屏| 亚洲社区在线观看| 在线日韩中文字幕| 国产日韩精品一区二区三区在线| 久久香蕉精品| 久久se精品一区二区| 亚洲一区二区三区精品视频 | 国产精品日韩| 噜噜噜91成人网| 久久精品女人| 亚洲无线一线二线三线区别av| ●精品国产综合乱码久久久久| 国产精品毛片在线看| 欧美日韩亚洲一区| 米奇777在线欧美播放| 亚洲欧美视频在线观看| 亚洲欧美视频在线| 欧美伊人久久大香线蕉综合69| 亚洲一级特黄| 久久久免费观看视频| 欧美一级播放| 蜜桃av噜噜一区二区三区| 欧美一区1区三区3区公司| 亚洲女性裸体视频| 国产一区二区三区的电影| 亚洲电影免费| 国产精品久久一卡二卡| 国产精品不卡在线| 国产综合自拍| 亚洲美女色禁图| 久久成人18免费网站| 国产精品亚洲美女av网站| 国产美女扒开尿口久久久| 亚洲国产成人av| 亚洲欧美一区二区精品久久久| 久久字幕精品一区| 中日韩美女免费视频网址在线观看| 欧美一区亚洲二区| 久久久久高清| 欧美午夜美女看片| 国产亚洲福利| 亚洲一区二区三区四区在线观看 | 欧美一级网站| 久久精品视频在线看| 久久久久在线观看| 日韩视频精品在线| 久久亚洲美女| 国产欧亚日韩视频| 亚洲欧美激情视频在线观看一区二区三区| 久久香蕉精品| 久久精品中文字幕一区| 国产精品视频一二| 亚洲影院色在线观看免费| 亚洲人被黑人高潮完整版| 欧美国产亚洲精品久久久8v| 亚洲国产你懂的| 亚洲成人在线视频播放 | 欧美成人精品| 另类激情亚洲| 亚洲作爱视频| 亚洲视频第一页| 国产欧美日韩在线观看| 久久青草福利网站| 亚洲第一视频| 久久天天躁夜夜躁狠狠躁2022 | 久久爱www久久做| 欧美有码视频| 亚洲高清在线播放| 亚洲每日在线| 国产日韩欧美另类| 亚洲国产mv| 国产精品一区三区| 欧美国产一区二区| 国产精品视频yy9099| 美女91精品| 国产精品毛片在线看| 欧美成人在线免费观看| 国产精品成人观看视频国产奇米| 久久精品日韩欧美| 欧美色欧美亚洲另类二区| 在线亚洲免费| 国产精品免费在线| 99热在线精品观看| 一本色道久久综合一区| 久久精品欧洲| 久久久91精品国产一区二区精品| 亚洲高清资源| 一区二区三区中文在线观看| 99精品视频免费全部在线| 亚洲狠狠婷婷| 六月婷婷一区| 黄色在线一区| 欧美一区二区三区久久精品| 国产精品久久久久久久久久尿| 国产资源精品在线观看|