带权无向图的存储模板

带权无项图的存储模板,无聊 做做玩玩。

#include<iostream>
#include<vector>
#include<queue>
#define MAXN 100
using namespace std;
struct Node
{
    int data;  //权值  
    int number;   //编号
    Node(int number,int data):data(data),number(number){}
};
vector<Node> map[MAXN];
int vis[MAXN] = {0};
void BFS(int start);
int main()
{
    freopen("in.txt","r",stdin);
    int m,n;  //节点数 和  路径数
    cin >> m >> n;
    for(int i = 1;i <= n;i++)
    {
        int a,b,c;
        cin >> a >> b >> c;
        //cout << a << b << c << endl;
        Node node1(b,c),node2(a,c);
        map[a].push_back(node1);
        map[b].push_back(node2);

    }
    BFS(1);
    return 0;
}
void BFS(int start)
{
    queue<int> q;
    //新建队列两步  把该节点放入  标记该节点走过
    q.push(start);
    vis[start] = 1;
    cout << start << endl;
    while(!q.empty())
    {
        //取出来 
        int temp = q.front();
        q.pop();
        //搜索所有的相邻节点
        for(int i = 0;i < map[temp].size();i++)
        {
            if(vis[map[temp][i].number]==0)
            {
                cout << map[temp][i].number << endl;
                q.push(map[temp][i].number);
                vis[map[temp][i].number] = 1;
            }
        }
    }
}

带权有向图

/*
    设计思路:
    函数fun(root ,level, total)
    每个层去掉一条边 向下搜索
    搜到叶子节点如果  如果total 小于cos  更新 cos
*/
#include<iostream>
#include<vector>
#define MAXN 320
using namespace std;
vector<int> v[MAXN];
int vis[MAXN] = {0};
int main()
{
    int m,n;
    cin >> m >> n;
    for(int i = 0;i < n;i++)
    {
        int a,b;
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38331049/article/details/89067990