#include<bits/stdc++.h>
using namespace std;
const int N=10000*2+5;
int n,m;
//-----------------链表法-------------
//每行a b c,表示城市a与城市b有长度为c的路
int a,b,c;
int one[N],ver[N],edge[N],Next[N],adj[N];
int tot=0;
void add(int a,int b,int c)//from a to b,w[a][b]=c;
{
tot++;
if(one[a]==0) one[a]=tot;
Next[adj[a]]=tot; adj[a]=tot;
edge[tot]=c;
ver[tot]=b;
return;
}
void Init()
{
int i,j;
int a,b,c;
cin>>n>>m;
for(i=1;i<=m;i++) {
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);//把一个无向边看成两个有向边;
add(b,a,c);
}
return;
}
//---------------------------------
//--------------链表的第二种----------
int a,b,c;
int one[N],ver[N],edge[N],Next[N];
int tot=0;
void add(int a,int b,int c)//from a to b,w[a][b]=c;
{
tot++;
Next[tot]=one[a];
one[a]=tot;
ver[tot]=b;
edge[tot]=c;
return;
}
void Init()
{
int i,j;
int a,b,c;
cin>>n>>m;
for(i=1;i<=m;i++) {
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);//把一个无向边看成两个有向边;
add(b,a,c);
}
return;
}
//------------邻接表---------------
//城市x与城市y有长度为z的路
int a[N][N],w[N][N];
int x,y,z;
void Init()
{
scanf("%d%d",&n,&m);
int i,j;
for(i=1;i<=m;i++) {
scanf("%d%d%d",&x,&y,&z);
a[x][++a[x][0]]=y;
a[y][++a[y][0]]=x;
w[x][y]=w[y][x]=z;
return;
}
}
//---------用向量优化邻接表------------
vector<int> a[N];
int w[N][N];
int x,y,z;
void Init()
{
scanf("%d%d",&n,&m);
int i,j;
for(i=1;i<=m;i++) {
scanf("%d%d%d",&x,&y,&z);
a[x].push_back(y);
a[y].push_back(x);
w[x][y]=w[y][x]=z;
return;
}
}
//---------------------------------
//------------simple图-------------
//稀疏图效率极低
//完全图效率高
//适用:Floyed.eg
int w[N][N];
int x,y,z;
void Init()
{
scanf("%d%d",&n,&m);
int i,j;
for(i=1;i<=m;i++) {
scanf("%d%d%d",&x,&y,&z);
w[x][y]=w[y][x]=z;
}
return;
}
//---------------------------------
//----------存边----------------
//适用:kruscal,bellman-ford
struct edge
{
int x;
int y;
int w;
};
edge a[N];
void Init()
{
scanf("%d%d",&n,&m);
int i,j;
for(i=1;i<=m;i++) {
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);
}
return;
}
//---------------------------------
int main()
{
freopen("1.in","r",stdin);
return 0;
}
图的构建 模板
猜你喜欢
转载自blog.csdn.net/qq_45646484/article/details/104282244
今日推荐
周排行