数据结构-模板-链式前向星

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
const ll MAXN=1e18;
const int MOD=1e6;

struct Graph{
    struct Edge{ int next,to,w;};
    Edge edge[8000005];
    int head[10000000];
    int cnt=2;//从2开始,方便异或操作
    void add(int u,int v,int w){
        edge[cnt].to=v;
        edge[cnt].w=w;
        edge[cnt].next=head[u];
        head[u]=cnt;
        ++cnt;
        return;
    }
    void update(int pos,int w){
        edge[pos^1].w=w;//异或操作修改反边
        edge[pos].w=w;
    }
}G;
int main(){
    int n,m,u,v,w;
    bool flag;
    cin>>n>>m>>flag;
    while(m--){
        cin>>u>>v>>w;
        G.add(u,v,w);
        if(flag==0) G.add(v,u,w);
    }
    int id;
    for(int i=1;i<=n;++i){
        id=G.head[i];
        while(id){
            cout<<i<<' '<<G.edge[id].to<<' '<<G.edge[id].w<<'\n';
            id=G.edge[id].next;
        }
    }
    return 0;
}
posted @ 2021-03-29 22:14  七铭的魔法师  阅读(35)  评论(0编辑  收藏  举报