【数据结构】SJTU OJ 1237
来源:互联网 发布:网络打印机如何设置ip 编辑:程序博客网 时间:2024/05/17 20:33
http://acm.sjtu.edu.cn/OnlineJudge/problem/1237
烦死了烦死了
应该按照年份考虑的,自己做的时候又忘记减入度,真是活该。快复习!!
#include <iostream>using namespace std;int begin=1,tail=0,Q[100001]={0},cnt=0,tmp=0,res=0,de;int begin_=1,tail_=0,Q_[100001]={0};void enQueue_(int x){ ++tail_; Q_[tail_]=x;}int result[101];void enQueue(int x){ ++tail; Q[tail]=x;}class graph{private: int vSize,eSize; struct edgeNode{ int weight; int end; edgeNode*next; edgeNode(int e,int w,edgeNode *n=NULL) { weight=w; end = e; next=n; } }; struct verNode{ int ver; edgeNode*head; verNode(edgeNode*h=NULL) { head = h; } }; verNode*verList;public: graph(int size) { vSize =size; eSize =0; verList = new verNode[vSize+1]; for(int i=1;i<=vSize;++i) { verList[i].ver =i; } } void insert(int u,int v,int weight=1) { verList[u].head = new edgeNode(v,weight,verList[u].head); eSize++; } int topSort() { int *inDegrees=new int[vSize+1]; for(int i=1;i<=vSize;++i) inDegrees[i]=0; for(int i=1;i<=vSize;++i) { edgeNode*p=verList[i].head; while(p!=NULL) { ++inDegrees[p->end]; p=p->next; } } bool *marked=new bool[vSize+1];for(int j=1;j<=vSize;++j) marked[j]=false; for(int i=1;i<=vSize;++i) { if(inDegrees[i]==0) { enQueue(i); } } while(begin<=tail) { if(begin<=tail)++tmp; while(begin<=tail) { de =Q[begin];begin++; marked[de]=true; edgeNode*p=verList[de].head; while(p!=NULL){ if(marked[p->end]==false) { if(--inDegrees[p->end]==0)enQueue_(p->end); } p=p->next; } } if(begin_<=tail_) tmp++; while(begin_<=tail_) { de = Q_[begin_];begin_++; marked[de]=true; edgeNode*p=verList[de].head; while(p!=NULL){ if(marked[p->end]==false) { if(--inDegrees[p->end]==0) enQueue(p->end); // marked[p->end]=true; } p=p->next; } } } return tmp; }};int main(){ int n,m,u,v; cin>>n>>m; graph g(n); for(int i=0;i<m;++i) { cin>>u>>v; g.insert(u,v); } g.topSort(); cout<<tmp; return 0;}
0 0
- 【数据结构】SJTU OJ 1237
- 【数据结构】SJTU OJ 1233
- 【数据结构】SJTU OJ 1234
- SJTU OJ.1204
- SJTU OJ.1204_new
- SJTU OJ 3008 Maze
- sjtu oj 1022. Fib数列
- SJTU OJ 1006 求和游戏
- SJTU OJ 1012. 增长率问题
- SJTU OJ 1006. 求和游戏
- SJTU OJ 1228 Matrix Sum
- sjtu
- sjtu oj 1002.二哥种花生
- sjtu oj 1003.二哥养细菌
- sjtu oj 1008.二哥买期货
- sjtu oj 1036. 二哥去取钱
- SJTU OJ 1990 二哥听CD
- SJTU OJ 1558 最长序列问题
- java面试中常用的排序算法
- 一秒钟Hold住Application.xml
- 设计模式之工厂
- ora-16433的处理思路
- C++STL模板容器(一)
- 【数据结构】SJTU OJ 1237
- HttpClient的”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常
- C++STL模板容器(二)
- 微信管家平台修改目录
- Android学习笔记之Switch的使用案例
- OC-沙盒
- aapt这个烂工具的一些乱七八糟的bug
- SOJ--4393: LaoB's problem1
- BroadcastReceiver那些事儿