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

Reiks的技術(shù)博客

C/C++/STL/Algorithm/D3D
posts - 17, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

#include <iostream>
#include 
<fstream>
#include 
<algorithm>
using namespace std;

struct Edge
{
    
int x, y, w; /*邊集,邊(x,y),權(quán)為c*/
}
e[20001];

int rank[1001]; /*節(jié)點的秩*/
int p[1001]; /*p[x]表示x節(jié)點父節(jié)點*/
int ans=0;
int ma;


void Make(int x)
{
    p[x] 
= x;
    rank[x] 
= 1;
}


int Find(int x) /*查找x所在集合子樹的根*/
{
    
if (x == p[x]) return x;
    
return p[x] = Find( p[x] );;
}


void Union(int x, int y, int c)
{
    x 
= Find(x);
    y 
= Find(y);
    
if ( x != y ) /*若x,y不屬于同一集合*/
    
{
        
if ( rank[x] > rank[y] ) /*將秩較小的樹連接到秩較大的樹后*/
        
{
            p[y] 
= x;
        }
 
        
else
        
{
            
if(rank[x] == rank[y])
                rank[y]
++;
            p[x] 
= y;
        }

        ans 
+= c;
        ma
++;
    }

}


bool cmp (const Edge & a, const Edge & b)
{
    
return a.w > b.w;
}


int N, M;

int main()
{
    
int n; /*邊的條數(shù)*/
    
int i;
    
//ifstream in("123.txt");
    ans=0;
    ma 
= 1;
    scanf(
"%d %d"&N, &M);
    
//cin >> N >> M;
    for ( i = 1; i <= N; ++i)
        Make(i);
    
for ( i = 0; i < M; ++i)
    
{
        scanf(
"%d %d %d"&e[i].x, &e[i].y, &e[i].w);
    }

    
    sort(e, e 
+ M, cmp); /*按權(quán)值非降序排序*/

    
for ( i = 0; i < M; ++i)
    
{
        Union(e[i].x, e[i].y, e[i].w);
    }

    
if (ma == N)
        printf(
"%d", ans);
    
else
        printf(
"-1");
    
//system("pause");
    return 0;
}

posted @ 2009-08-28 09:17 reiks 閱讀(302) | 評論 (0)編輯 收藏

#include <stdio.h>
#include 
<assert.h>
#include 
<malloc.h>

void c(int n)
{
    
extern void _c(int n, int cur, int *a, int now);
    
int *a;
    a 
= (int *) malloc(n * sizeof(int));
    assert(a 
!= NULL);
    _c(n, 
0, a, 1);
    free(a);
}


void _c(int n, int cur, int *a, int now)
{
    
int i,j;
    
for (i=now; i<=n; i++)
    
{
        a[cur] 
= i;
        
        
for (j=0; j<=cur; j++)
        
{
            printf(
"%d ", a[j]);
        }

        printf(
"\n");
        
        _c(n, cur
+1, a, i+1);
    }

}


int main()
{
    c(
3);
}

posted @ 2009-08-28 09:16 reiks 閱讀(250) | 評論 (0)編輯 收藏

#include <stdio.h>
#include 
<assert.h>
#include 
<malloc.h>

void p(int n)
{
    
extern void _p(int n, int cur, int *a);
    
int *a;
    a 
= (int *) malloc(n * sizeof(int));
    assert(a 
!= NULL);
    _p(n, 
0, a);
    free(a);
}


void _p(int n, int cur, int *a)
{
    
int i,j;
    
if (cur == n)
    
{
        
for (j=0; j<cur; j++)
        
{
            printf(
"%d ", a[j]);
        }

        printf(
"\n");
        
return;
    }

    
for (i=1; i<=n; i++)
    
{
        
for (j=0; j<cur; j++)
        
{
            
if (a[j] == i)
            
{
                
break;
            }

        }

        
if (j>=cur)
        
{
            a[cur] 
= i;
            _p(n, cur
+1, a);
        }

    }

}


int main()
{
    p(
3);
}

posted @ 2009-08-28 09:15 reiks 閱讀(210) | 評論 (0)編輯 收藏

 

#include <iostream>
#include 
<vector>
#include 
<list>
#include 
<iterator>
#include 
<algorithm>
#include 
<numeric>
#include 
<functional>
#include 
<climits>
using namespace std;

int n;                    // n : 頂點個數(shù) 
vector<vector<int> > g; // g : 圖(graph)(用鄰接矩陣(adjacent matrix)表示) 
int s;                    // s : 源點(source) 
vector<bool> known;        // known : 各點是否知道最短路徑 
vector<int> dist;        // dist : 源點s到各點的最短路徑長 
vector<int> prev;        // prev : 各點最短路徑的前一頂點

void Dijkstra()            // 貪心算法(Greedy Algorithm) 
{
    known.assign(n, 
false);
    dist.assign(n, INT_MAX);
    prev.resize(n);            
// 初始化known、dist、prev。 
    dist[s] = 0;            // 初始化源點s到自身的路徑長為0。 
    for (;;)
    
{
        
int min = INT_MAX, v = s;
        
for (int i = 0; i < n; ++i)
            
if (!known[i] && min > dist[i])
                min 
= dist[i], v = i;    // 尋找未知的最短路徑長的頂點v, 
        if (min == INT_MAX) break;        // 如果找不到,退出; 
        known[v] = true;                // 如果找到,將頂點v設(shè)為已知, 
        for (int w = 0; w < n; ++w)        // 遍歷所有v指向的頂點w, 
            if (!known[w] && g[v][w] < INT_MAX && dist[w] > dist[v] + g[v][w])
                dist[w] 
= dist[v] + g[v][w], prev[w] = v;    // 調(diào)整頂點w的最短路徑長dist和最短路徑的前一頂點 prev。 
    }

}


void Print_SP(int v)
{
     
if (v != s) Print_SP(prev[v]);
     cout 
<< v << " ";
}


int main()
{
    n 
= 7;
    g.assign(n, vector
<int>(n, INT_MAX));
    g[
0][1= 2; g[0][3= 1
    g[
1][3= 3; g[1][4= 10
    g[
2][0= 4; g[2][5= 5
    g[
3][2= 2; g[3][4= 2; g[3][5= 8; g[3][6= 4
    g[
4][6= 6
    g[
6][5= 1;
    
    s 
= 0;
    Dijkstra();
    
    copy(dist.begin(), dist.end(), ostream_iterator
<int>(cout, " ")); cout << endl;
    
for (int i = 0; i < n; ++i)
        
if(dist[i] != INT_MAX)
        
{
            cout 
<< s << "->" << i << "";
            Print_SP(i); 
            cout 
<< endl; 
        }

    
    system(
"pause");
    
return 0;
}



/*============優(yōu)先隊列版================*/
class great 
{
public:
        
bool operator() (pair<intint>& p1, pair<intint>& p2) {
                
return (p1.second > p2.second);
        }

}
;


int G[N][N];

int dijkstra(int src, int dst) {
        vector
<int> cost(N, INT_MAX);
        vector
<bool> visited(N, false);

        priority_queue
< pair<intint>, vector< pair<intint> >, great > Q;

        cost[src] 
= 0;
        Q.push( make_pair(src, 
0) );

        
while(!Q.empty()) {
                pair
<intint> top = Q.top();
                Q.pop();

                
int v = top.first;
                
if (v == dst) return cost[v];

                
if (visited[v]) continue;
                visited[v] 
= true;

                
for(int v2 = 0; v2 < N; v2++if (G[v][v2] != 0{
                        
int dist = G[v][v2];
                        
if(cost[v2] > cost[v] + dist) {
                                cost[v2] 
= cost[v] + dist;
                                Q.push( make_pair(v2, cost[v2]) );
                        }

                }

        }


        
return -1;
}

posted @ 2009-08-28 09:14 reiks 閱讀(293) | 評論 (0)編輯 收藏

#include<fstream>
#define Maxm 501
using namespace std;
ifstream fin(
"APSP.in");
ofstream fout(
"APSP.out");
int p, q, k, m;
int Vertex, Line[Maxm];
int Path[Maxm][Maxm], Map[Maxm][Maxm], Dist[Maxm][Maxm];
void Root(int p,int q)
{
    
if (Path[p][q]>0)
    
{
        Root(p, Path[p][q]);
        Root(Path[p][q], q);
    }

    
else 
    
{
        Line[k]
=q;
        k
++;
    }

}

int main()
{
    memset(Path,
0,sizeof(Path));
    memset(Map,
0,sizeof(Map));
    memset(Dist,
0,sizeof(Dist));
    fin 
>> Vertex;
    
for(p=1;p<=Vertex;p++)    
        
for(q=1;q<=Vertex;q++)
        
{
            fin 
>> Map[p][q];
            Dist[p][q]
=Map[p][q];
        }

    
for(k=1;k<=Vertex;k++)
    
{
        
for(p=1;p<=Vertex;p++)
        
{
            
if (Dist[p][k]>0)
            
{
                
for(q=1;q<=Vertex;q++)
                
{
                    
if (Dist[k][q]>0)
                    
{
                        
if (((Dist[p][q]>Dist[p][k]+Dist[k][q])||(Dist[p][q]==0))&&(p!=q))
                        
{
                            Dist[p][q]
=Dist[p][k]+Dist[k][q];
                            Path[p][q]
=k;
                        }

                    }

                }

            }

        }

    }

    
for(p=1;p<=Vertex;p++)
    
{
        
for(q=p+1;q<=Vertex;q++)
        
{
            fout 
<< "\n==========================\n"
            fout 
<< "Source:" << p << '\n' << "Target " << q << '\n'
            fout 
<< "Distance:" << Dist[p][q] << '\n';
            fout 
<< "Path:" << p;
            k
=2;
            Root(p,q);
            
for(m=2;m<=k-1;m++)
            fout 
<< "-->" << Line[m];
            fout 
<< '\n';
            fout 
<< "==========================\n";
        }

    }

    fin.close();
    fout.close();
    
return 0;
}

/*
注解:無法連通的兩個點之間距離為0;
Sample Input
7
00 20 50 30 00 00 00
20 00 25 00 00 70 00
50 25 00 40 25 50 00
30 00 40 00 55 00 00
00 00 25 55 00 10 70
00 70 50 00 10 00 50
00 00 00 00 70 50 00
*/

posted @ 2009-08-28 09:13 reiks 閱讀(196) | 評論 (0)編輯 收藏

     摘要:   // PRIM(簡單版) 最小生成樹算法 (Minimum Spanning Tree) // 輸入:圖g;                 /...  閱讀全文

posted @ 2009-08-28 09:12 reiks 閱讀(549) | 評論 (0)編輯 收藏

#include <iostream>   
using namespace std;   
#define N 100   
struct TNode   
{   
    
int left, right;   
    
int n;   
}
;   
TNode T[N
*2+1];   
void build(int s, int t, int step)   
{   
    T[step].left 
= s;   
    T[step].right 
= t;   
    T[step].n 
= 0;   
    
if(s == t)   
        
return;   
    
int mid = (s + t) / 2;   
    build(s, mid, step
*2);   
    build(mid
+1, t, step*2+1);   
}
   
void insert(int s, int t, int step)   
// insert [s, t] in the tree   
{   
    
if(s == T[step].left && t == T[step].right)   
    
{   
        T[step].n
++;   
        
return;   
    }
   
    
int mid = (T[step].left + T[step].right) / 2;   
    
if(t <= mid)   
        insert(s, t, step
*2);   
    
else if(s > mid)   
        insert(s, t, step
*2+1);   
    
else  
    
{   
        insert(s,mid, step
*2);   
        insert(mid
+1, t, step*2+1);   
    }
   
}
   
void calculate(int s, int t, int step, int target, int& count)   
// caculate target in the tree   
{   
    count 
+= T[step].n;   
    
if(s == t)   
        
return;   
    
int mid = (s + t) / 2;   
    
if(target <= mid)   
        calculate(s, mid, step
*2, target, count);   
    
else  
        calculate(mid
+1, t, step*2+1, target, count);   
}
   
int main()   
{   
    build(
071);   
    insert(
251);   
    insert(
461);   
    insert(
071);   
    
int count = 0;   
    calculate(
0714, count);   
    cout  
<< count << endl;   
    
return 0;   
}
  

posted @ 2009-08-28 09:11 reiks 閱讀(315) | 評論 (0)編輯 收藏

僅列出標(biāo)題
共2頁: 1 2 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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热在这里有精品免费| 久久久999| 日韩一级黄色av| 久久久久在线| 国产精品美女久久久久久2018| 在线播放国产一区中文字幕剧情欧美| 宅男噜噜噜66一区二区| 久久综合影音| 亚洲欧美国产制服动漫| 欧美大片在线观看一区| 国产一区二区日韩精品| 在线视频亚洲| 另类综合日韩欧美亚洲| 亚洲午夜精品久久| 欧美成人精品在线播放| 韩国av一区二区三区在线观看| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久久精彩视频| 国产精品九九| 亚洲精品孕妇| 美腿丝袜亚洲色图| 亚洲欧美日韩一区在线观看| 欧美精品久久久久久久| 伊人久久av导航| 性色av一区二区三区在线观看 | 99国产精品久久久久久久成人热 | 另类激情亚洲| 性色av一区二区三区| 欧美日韩爆操| 91久久综合| 另类春色校园亚洲| 欧美亚洲日本网站| 国产精品色在线| 亚洲香蕉网站| 亚洲精品久久久久久久久久久| 久久久噜噜噜久久| 国产一区二区中文| 欧美一级午夜免费电影| 一个色综合导航| 欧美日本一区| 日韩视频一区二区| 欧美激情国产精品| 久久色中文字幕| 依依成人综合视频| 老巨人导航500精品| 性色av一区二区三区| 国产欧美韩国高清| 欧美专区在线播放| 亚洲欧美日本日韩| 国产美女一区二区| 欧美一区二区大片| 亚洲欧美中文日韩v在线观看| 国产精品久久久久久福利一牛影视 | 欧美~级网站不卡| 久久久久国产免费免费| 国内综合精品午夜久久资源| 欧美在线视屏| 欧美一区亚洲| 伊人精品久久久久7777| 免费成人小视频| 六月天综合网| 亚洲精品久久久久| 亚洲国内自拍| 欧美日韩国产欧美日美国产精品| 亚洲三级色网| 一级成人国产| 国产欧美日韩高清| 久久久青草婷婷精品综合日韩| 欧美在线视频a| 在线欧美日韩精品| 亚洲福利视频二区| 欧美日韩国产三区| 性xx色xx综合久久久xx| 欧美一区二区啪啪| 亚洲国产精品成人| 91久久嫩草影院一区二区| 欧美日韩国产精品一区| 午夜精品影院| 欧美在线在线| 亚洲三级免费电影| 一卡二卡3卡四卡高清精品视频| 国产精品久久久久久久久借妻| 欧美一区免费视频| 久久久久久亚洲精品中文字幕 | 在线视频一区观看| 亚洲欧美日本另类| 在线观看视频一区二区欧美日韩| 亚洲二区在线| 国产精品久久久久久五月尺| 欧美一区二区三区在线视频 | 亚洲电影天堂av| 国产精品v欧美精品v日本精品动漫| 亚洲欧美日韩国产成人精品影院| 欧美伊人久久久久久久久影院| 亚洲国产精品视频一区| 一个色综合av| 激情综合电影网| 亚洲精选成人| 国产欧美一区二区色老头| 免费日韩av片| 欧美午夜剧场| 美日韩精品视频| 欧美午夜三级| 美女爽到呻吟久久久久| 欧美日韩一区二区免费视频| 久久精品一区中文字幕| 欧美国产欧美综合 | 伊人久久亚洲美女图片| 亚洲人成人77777线观看| 国产欧美日韩伦理| 亚洲国产精品嫩草影院| 国产精品视频免费在线观看| 亚洲福利视频一区二区| 国产欧美日韩综合| 亚洲国产精品一区二区第四页av | 韩国一区二区三区在线观看| 亚洲二区视频| 国产在线精品一区二区夜色| 亚洲日韩欧美一区二区在线| 国产在线高清精品| 亚洲视频你懂的| 日韩视频在线免费| 久久精品视频在线免费观看| 一区二区冒白浆视频| 久久青青草综合| 久久不见久久见免费视频1| 欧美激情区在线播放| 美女精品视频一区| 国产精品一区一区三区| 最新国产拍偷乱拍精品| 黄色欧美成人| 午夜在线视频一区二区区别| 亚洲天堂成人在线视频| 欧美1区2区| 久久免费视频一区| 国产精品一区二区久激情瑜伽| 亚洲日本在线观看| 亚洲二区视频在线| 欧美伊人精品成人久久综合97 | 久久99伊人| 亚洲欧美在线播放| 欧美日韩免费看| 亚洲国产欧洲综合997久久| 激情久久久久久久| 午夜在线精品| 欧美中文在线观看| 国产精品久久久久免费a∨| 91久久精品美女高潮| 亚洲国产精品专区久久| 久久精品男女| 久久久之久亚州精品露出| 国产麻豆精品视频| 亚洲午夜精品17c| 亚洲欧美国产制服动漫| 欧美日韩在线精品| 日韩亚洲成人av在线| 日韩午夜激情电影| 欧美日本三区| 日韩视频在线免费观看| 日韩亚洲国产欧美| 欧美国产一区视频在线观看 | 日韩午夜av电影| av成人手机在线| 欧美精品日韩| 亚洲人成人77777线观看| 亚洲精品中文字幕在线| 欧美肥婆在线| 亚洲人成网站影音先锋播放| 亚洲美女色禁图| 欧美日韩国产精品一区二区亚洲| 亚洲精品久久久久久久久久久久| 日韩亚洲一区二区| 欧美日韩亚洲另类| 一区二区三区免费看| 午夜精品久久久久| 国产视频在线观看一区二区三区| 欧美一区二区日韩| 女人香蕉久久**毛片精品| 1204国产成人精品视频| 欧美成人按摩| 亚洲另类在线一区| 午夜视频久久久久久| 国产欧美精品在线观看| 久久久噜噜噜久久狠狠50岁| 亚洲国产成人tv| 亚洲夜晚福利在线观看| 国产精品免费电影| 欧美在线影院|