成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

圖的基本算法

姘擱『 / 3474人閱讀

摘要:圖的基本算法算法算法算法算法算法最小生成樹拓?fù)渑判驁D的和算法算法為稠密陣所以用鄰接矩陣存儲用于記錄每一個點(diǎn)距離第一個點(diǎn)的距離用于記錄

bellman-ford算法

#include#include#includeusing namespace std;const int N=510,M=10010;int dist[N],backup[N];int n,m,k;struct edge{    int a,b,w;}edges[M];int bellman_ford(){    memset(dist,0x3f,sizeof(dist));    dist[1]=0;    for(int i=0;i<k;i++){        memcpy(backup,dist,sizeof dist);        for(int j=1;j<=m;j++){            int a=edges[j-1].a,b=edges[j-1].b,w=edges[j-1].w;            dist[b]=min(dist[b],backup[a]+w);        }    }    //if(dist[n]>0x3f3f3f3f/2)return -1;    return dist[n];}int main(){    cin>>n>>m>>k;    for(int i=0;i<m;i++){        int a,b,w;        cin>>a>>b>>w;        edges[i]={a,b,w};    }    int t=bellman_ford();    if(t>0x3f3f3f3f/2)puts("impossible");    else cout<<t;    return 0;}

dijkstra算法

#include#include#includeusing namespace std;const int N=510;int g[N][N];    //為稠密陣所以用鄰接矩陣存儲int dist[N];    //用于記錄每一個點(diǎn)距離第一個點(diǎn)的距離bool st[N];     //用于記錄該點(diǎn)的最短距離是否已經(jīng)確定int n,m;int Dijkstra(){    memset(dist,0x3f,sizeof dist);    dist[1]=0;    for(int i=0;i<n;i++){        int t=-1;        for(int j=1;j<=n;j++){            if(!st[j]&&(t==-1||dist[t]>dist[j]))                t=j;        }        st[t]=true;        for(int u=1;u<=n;u++){            dist[u]=min(dist[u],dist[t]+g[t][u]);        }    }    if(dist[n]==0x3f3f3f3f)return -1;    return dist[n];}int main(){    cin>>n>>m;    memset(g,0x3f,sizeof g);    //初始化圖 因為是求最短路徑                                //所以每個點(diǎn)初始為無限大    while(m--)    {        int x,y,z;        cin>>x>>y>>z;        g[x][y]=min(g[x][y],z);     //如果發(fā)生重邊的情況則保留最短的一條邊    }    cout<<Dijkstra()<<endl;    return 0;}

Floyd算法

#include#include#includeusing namespace std;const int N=210;int g[N][N];int m,n,k;int main(){    cin>>n>>m>>k;    for(int i=1;i<=n;++i)        for(int j=1;j<=n;++j)            if(i==j)g[i][j]=0;            else g[i][j]=999999;    for(int i=0;i<m;i++){        int a,b,c;        cin>>a>>b>>c;        g[a][b]=min(g[a][b],c);    }    for(int v=1;v<=n;v++){        for(int i=1;i<=n;i++){            for(int j=1;j<=n;j++){                if(g[i][j]>g[i][v]+g[v][j])                    g[i][j]=g[i][v]+g[v][j];            }        }    }    while(k--){        int x,y;        cin>>x>>y;        if(g[x][y]>= 900000)printf("impossible/n");        else cout<<g[x][y]<<endl;    }    return 0;}

spfa算法

#include#include#include#includeusing namespace std;const int N=1e5+10;int e[N],ne[N],h[N],w[N],idx;int n, m;int dist[N];bool st[N];void add(int a,int b,int c){    e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;}int spfa(){    memset(dist,0x3f,sizeof dist);    dist[1]=0;    queue<int>q;    q.push(1);    st[1]=true;    while(!q.empty()){        int t=q.front();        q.pop();        st[t]=false;        for(int i=h[t];i!=-1;i=ne[i]){            int j=e[i];            if(dist[j]>dist[t]+w[i]){                dist[j]=dist[t]+w[i];                if(!st[j]){                    q.push(j);                    st[j]=true;                }            }        }    }    //if(dist[n]==0x3f3f3f3f)return -1;    return dist[n];}int main(){    memset(h,-1,sizeof(h));    cin>>n>>m;    for(int i=0;i<m;i++){        int a,b,c;        cin>>a>>b>>c;        add(a,b,c);    }    int t=spfa();    if(t==0x3f3f3f3f)puts("impossible");    else cout<<t;    return 0;}

prim算法(最小生成樹)

#include#include#includeusing namespace std;const int N=510;int n,m;int g[N][N],dist[N];bool st[N];int prim(){    memset(dist,0x3f,sizeof dist);    int ans=0;    for(int i=1;i<=n;i++){        int t=-1;        for(int j=1;j<=n;j++){            if(!st[j]&&(t==-1||dist[j]<dist[t]))                t=j;        }        st[t]=true;        if((i-1)&&dist[t]==0x3f3f3f3f)return 0x3f3f3f3f;        if(i-1) ans+=dist[t];        for(int v=1;v<=n;v++){            dist[v]=min(dist[v],g[t][v]);        }    }    return ans;}int main(){     memset(g,0x3f,sizeof g);    cin >> n >> m;    while(m--){        int a,b,c;        cin>>a>>b>>c;        g[a][b]=g[b][a]=min(g[a][b],c);    }    int t=prim();    if(t==0x3f3f3f3f)cout<<"impossible";    else cout<<t;    return 0;}

拓?fù)渑判?/h2>
#include#includeusing namespace std;const int N=1e5+10;int e[N],ne[N],h[N],idx;int n,m;int q[N],d[N];void add(int a,int b){    e[idx]=b,ne[idx]=h[a],h[a]=idx++;}bool topsort(){    int hh=0,tt=-1;    for(int i=1;i<=n;i++){        if(d[i]==0)q[++tt]=i;    }    while(hh<=tt){        int t=q[hh++];        for(int i=h[t];i!=-1;i=ne[i]){            int j=e[i];            d[j]--;            if(d[j]==0) q[++tt]=j;        }    }    return tt==n-1;}int main(){    memset(h,-1,sizeof h);    cin>>n>>m;    for(int i=0;i<m;i++){        int a,b;        cin>>a>>b;        add(a,b);        d[b]++;    }    if(topsort()){        for(int i=0;i<n;i++){            cout<<q[i]<<" ";        }    }    else{        cout<<-1;    }    return 0;}

圖的dfs和bfs

#define _CRT_SECURE_NO_WARNINGS 1#include#include#includeusing namespace std;//dfs求島嶼面積const int N = 1100;int arr[N][N], book[N][N], sum = 1, m, n, x, y;void dfs(int x, int y) {	int dx[4] = { 1,0,-1,0 };	int dy[4] = { 0,1,0,-1 };	int ddx, ddy;	for (int i = 0;i < 4;i++) {		ddx = x + dx[i];		ddy = y + dy[i];		if (ddx > m || ddx<1 || ddy>n || ddy < 1)			continue;		if (arr[ddx]
            
                     
             
               

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/124093.html

相關(guān)文章

  • 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和算法概念

    摘要:數(shù)據(jù)結(jié)構(gòu)程序數(shù)據(jù)結(jié)構(gòu)算法數(shù)據(jù)結(jié)構(gòu)基本概念數(shù)據(jù)的邏輯結(jié)構(gòu)反映數(shù)據(jù)元素之間的關(guān)系的數(shù)據(jù)元素集合的表示。這兩部分信息組成數(shù)據(jù)元素的存儲映象,稱為結(jié)點(diǎn)。 本文涉及更多的是概念,代碼部分請參考之前寫過的 2 篇博客 基于 Javascript 的排序算法 基于 javascript 的基本數(shù)據(jù)結(jié)構(gòu)和查找算法 本文主要是基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和算法概念,可能部分地方會涉及更高級的算法和算法,具體內(nèi)容以...

    fsmStudy 評論0 收藏0
  • 以靜制動的TensorFlow Fold動態(tài)計算圖介紹

    摘要:近日它們交鋒的戰(zhàn)場就是動態(tài)計算圖,誰能在這場戰(zhàn)爭中取得優(yōu)勢,誰就把握住了未來用戶的流向。所以動態(tài)框架對虛擬計算圖的構(gòu)建速度有較高的要求。動態(tài)計算圖問題之一的多結(jié)構(gòu)輸入問題的高效計 隨著深度學(xué)習(xí)的發(fā)展,深度學(xué)習(xí)框架之間競爭也日益激烈,新老框架紛紛各顯神通,想要在廣大DeepLearner的服務(wù)器上占據(jù)一席之地。近日它們交鋒的戰(zhàn)場就是動態(tài)計算圖,誰能在這場戰(zhàn)爭中取得優(yōu)勢,誰就把握住了未來用戶的流...

    waltr 評論0 收藏0
  • 算法第四版4.1-無向圖詳解

    摘要:樹是一副無環(huán)連通圖?;ゲ幌噙B的樹組成的集合稱為森林。表示無向圖的數(shù)據(jù)類型圖的基本操作的兩個構(gòu)造,得到頂點(diǎn)數(shù)和邊數(shù),增加一條邊。該方法不符合第一個條件,上百萬個頂點(diǎn)的圖是很常見的空間不滿足。 四種重要的圖模型: 無向圖(簡單連接) 有向圖(連接有方向性) 加權(quán)圖(連接帶有權(quán)值) 加權(quán)有向圖(連接既有方向性又帶有權(quán)值) 無向圖 定義:由一組頂點(diǎn)和一組能夠?qū)蓚€頂點(diǎn)相連的邊組成。 特殊:...

    scola666 評論0 收藏0
  • Adobe提出深度摳圖:利用卷積網(wǎng)絡(luò)分離圖像前景與背景

    摘要:在等機(jī)構(gòu)新提出的論文中,其采用了大規(guī)模數(shù)據(jù)集與深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)圖像的自然結(jié)構(gòu),從而進(jìn)一步分離圖像的前景與背景。一張手動摳圖的前景圖擁有簡單背景作為輸入。對于每一張測試圖像,按照降序從第列到第列顯示了度量下的排名結(jié)果排名到。 摳圖,一直是一件體力活,它需要大量的操作與時間。而傳統(tǒng)摳圖算法主要是以色彩為特征分離前景與背景,并在小數(shù)據(jù)集上完成,而這就造成了傳統(tǒng)算法的局限性。在 Adobe 等機(jī)構(gòu)新...

    soasme 評論0 收藏0
  • 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法 — 圖

    摘要:圖關(guān)聯(lián)矩陣在關(guān)聯(lián)矩陣表示的圖中,矩陣的行表示頂點(diǎn),列表示邊。如圖,頂點(diǎn)數(shù)是,邊的數(shù)量是,用鄰接矩陣表示圖需要的空間是,而使用關(guān)聯(lián)矩陣表示圖需要的空間是。廣度優(yōu)先搜索算法數(shù)據(jù)結(jié)構(gòu)是隊列。深度優(yōu)先搜索算法數(shù)據(jù)結(jié)構(gòu)是棧。 定義 圖和散列表、二叉樹一樣,是一種非線性數(shù)據(jù)結(jié)構(gòu)。如圖1所示,圖由一系列頂點(diǎn)以及連接頂點(diǎn)的邊構(gòu)成。由一條邊連接在一起的頂點(diǎn)成為相鄰頂點(diǎn),比如A和B、A和D是相鄰的,而A和...

    yiliang 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<