-
个人简介
小号:int sans 、njo sans、nightmare sans、dust sans
队列:先进先出 队尾进,队头出。 队列操作: 1.入列: q.push(x); 2.出队: q.pop( ); 3.获取队头: q.front( ); 4.获取队尾: q.back( ); 5.判空: q.empty( ); 6.元素个数: q.size( );创建队列: queue 队列名称 <队列元素类型>;
//邻接表 #include<bits/stdc++.h> using namespace std; int vex[1024]={},n,m,v1,v2,q; struct node{int to/* 可到达的顶点*/,next/*上一个顶点坐标*/,q/*权*/;} edge[1024]; int main(){ //创建邻接表开始 cin>>n>>m; for(int i=1;i<=m;i++){ cin>>v1>>v2>>q; edge[i].to=v2; edge[i].q=q; edge[i].next=vex[v1]; vex[v1]=i; } //创建邻接表结束 //邻接表遍历开始 for(int i=1;i<=n;i++){ //枚举所有顶点 cout<<i<<':'; for(int j=vex[i];j!=0;j=edge[j].next){ printf("(%d,%d)->", edge[j].to,edge[j].q); //输出顶点 } cout<<endl; } }
//邻接表 #include<bits/stdc++.h> using namespace std; int vex[100005]={},degree[100005]/*度*/,n,m,v1,v2,sum_v=0/*输出顶点个数*/; struct node{int to/* 可到达的顶点*/,next/*上一个顶点坐标*/;} edge[1024];//链表 int tmp[1145140];//输出数据存放数组 void top_sort(){ //top排序 stack <int> s;//按照栈的特性进行拓扑排序 //入度为0的点入栈 for(int i=1;i<=n;i++){ if(degree[i]==0) s.push(i); } //栈不空循环: int i=1; while(s.size()!=0){ //获取栈顶存入tmp tmp[i]=s.top(); //sum_v++ sum_v+=1; //出栈 s.pop(); //枚举tmp为起点的所有边 for(int j=vex[tmp[i]];j!=0;j=edge[j].next){ //将枚举的边入度-1 degree[edge[j].to]--; //若-1后入度为0 if(degree[edge[j].to]==0){ //则该点入栈 s.push(edge[j].to); } } i++; } } int main(){ //创建邻接表开始 cin>>n>>m; for(int i=1;i<=m;i++){ cin>>v1>>v2; edge[i].to=v2; edge[i].next=vex[v1];//上一个点的坐标 degree[v2]++;//终点入度增加 vex[v1]=i;//标记该点坐标 } //创建邻接表结束 top_sort(); if(sum_v==n){ for(int i=1;i<=n;i++){ cout<<tmp[i]<<' '; } } else cout<<" has cicle"; }
-
通过的题目
-
最近活动
题目标签
- 初窥门径
- 4
- 顺序结构
- 4
- 月赛语法
- 2
- 条件分支
- 1
- 字符串
- 1