// 邻接矩阵遍历#include#include using namespace std;#define N 10010 int x,y,z,n,m,a[N][N],vis[N];void dfs(int x){ vis[x]=1; for(int i=1;i<=n;i++) if(a[x][i]&&!vis[i])//相连的 但是没有遍历过的 dfs(i);}int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&x,&y,&z); a[x][y]=z; dfs(1); return 0;}
//邻接表 #include#include using namespace std;#define N 10010 int x,y,z,n,cnt,v[N],next[N],head[N],len[N];void add_edge(int x,int y,int z)//head为表头 { v[++cnt]=y; next[cnt]=head[x]; head[x]=cnt; len[cnt]=z;}void dfs(int x){ vis[x]=1; for(int i=head[x];i;i=next[i]){ if(!vis[v[i]]){ dfs(v[i]); } }}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y,&z); add_edge(x,y,z); } return 0;}
//vector 储存图 #include#include #include using namespace std;#define N 10010int vis[N],x,y,z;vector >vec[N];//> >中间要有空格 void dfs(int x){ vis[x]=1; for(int i=0;i
//前向星#include#include #include using namespace std;#define N 10010struct st{ int x,y,z;}a[N];int vis[N],cnt,L[N],R[N];bool cmp(st a,st b){ return a.x
矩阵算法 位运算时方便
边集数组 前向星:
没有将边挂在点上 而是储存每条边的信息 一般不需要遍历整张图 常用于并查集 方便排序