国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

圖的基本算法

姘擱『 / 3403人閱讀

摘要:圖的基本算法算法算法算法算法算法最小生成樹拓撲排序圖的和算法算法為稠密陣所以用鄰接矩陣存儲用于記錄每一個點距離第一個點的距離用于記錄

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];    //用于記錄每一個點距離第一個點的距離bool st[N];     //用于記錄該點的最短距離是否已經確定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);    //初始化圖 因為是求最短路徑                                //所以每個點初始為無限大    while(m--)    {        int x,y,z;        cin>>x>>y>>z;        g[x][y]=min(g[x][y],z);     //如果發生重邊的情況則保留最短的一條邊    }    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;}

拓撲排序

#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]
            
                     
             
               

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/124093.html

相關文章

  • 基礎數據結構和算法概念

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

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

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

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

    摘要:樹是一副無環連通圖。互不相連的樹組成的集合稱為森林。表示無向圖的數據類型圖的基本操作的兩個構造,得到頂點數和邊數,增加一條邊。該方法不符合第一個條件,上百萬個頂點的圖是很常見的空間不滿足。 四種重要的圖模型: 無向圖(簡單連接) 有向圖(連接有方向性) 加權圖(連接帶有權值) 加權有向圖(連接既有方向性又帶有權值) 無向圖 定義:由一組頂點和一組能夠將兩個頂點相連的邊組成。 特殊:...

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

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

    soasme 評論0 收藏0
  • 學習JavaScript數據結構與算法 — 圖

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

    yiliang 評論0 收藏0

發表評論

0條評論

姘擱『

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<