UVALive 6467 Strahler Order 拓扑排序
2014-07-15 20:25
429 查看
水题。给你n个点m条边。入度为0的点标为1,如果一个点只有一个点指向,那么它标为那个点的标数。如果一个点有两个或以上相同标号的点指向。那么给它标为i+1,如果有更大的话就标为更大的。求最大的标号。
拓扑排序
拓扑排序
//First Edit Time: 2014-07-15 12:40 //Last Edit Time: 2014-07-15 12:40 //Filename:C.cpp #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <set> #include <vector> #include <map> #include <queue> #include <set> #include <algorithm> using namespace std; #define MAXN 1010 #define INF_INT 0xfffff0 vector <int> e[MAXN]; int n,m; int dis[MAXN],cnt[MAXN],pre[MAXN]; int ru[MAXN]; int bfs(){ queue <int> q; for(int i=1;i<=n;i++){ dis[i]=0; pre[i]=-1; cnt[i]=0; if(ru[i]==0){ q.push(i); cnt[i]=1; dis[i]=1; } } while(!q.empty()){ int now=q.front(); q.pop(); for(int i=0;i<(int)e[now].size();i++){ int next=e[now][i]; if(pre[next]==-1){ pre[next]=dis[now]; dis[next]=dis[now]; cnt[next]=1; } else{ if(pre[next]<dis[now]){ pre[next]=dis[now]; dis[next]=dis[now]; cnt[next]=1; } else if(pre[next]==dis[now]&&cnt[next]==1){ if(dis[next]!=dis[now]+1){ dis[next]=dis[now]+1; } } } --ru[next]; if(ru[next]==0){ q.push(next); } } } int mm=dis[1]; for(int i=2;i<=n;i++) if(dis[i]>mm)mm=dis[i]; /* for(int i=1;i<=n;i++){ printf("%d ",dis[i]); } puts(""); */ return mm; } int main() { int t,cas; scanf("%d",&t); while(t--){ scanf("%d",&cas); scanf("%d%d",&n,&m); for(int i=0;i<n+2;i++)e[i].clear(); memset(ru,0,sizeof(ru)); for(int i=0,x,y;i<m;i++){ scanf("%d%d",&x,&y); e[x].push_back(y); ++ru[y]; } printf("%d %d\n",cas,bfs()); } return 0; }
相关文章推荐
- UVALive 6467 Strahler Order(拓扑排序)
- UVALive 6467 Strahler Order 拓扑排序
- UVALive - 4255 - Guess (拓扑排序)
- UValive 4255 Guess(拓扑排序)
- UvaLive 4255 Guess(拓扑排序)
- uvalive 6393(uva 1572) Self-Assembly 拓扑排序
- UValive 4255 Guess(拓扑排序)
- uvalive 6393(uva 1572) Self-Assembly 拓扑排序
- UVALive 7272 Promotions【拓扑排序】【bitset】
- Uvalive 6264 Conservation 拓扑排序
- UVALive 4255-Guess-拓扑排序
- UVALive 4255 Guess【拓扑排序 】
- D - Guess UVALive - 4255 拓扑排序
- UVAlive 6195 拓扑排序 描述巨坑
- UVALive - 4255 - Guess (拓扑排序)
- UVALive 4255 前缀和 拓扑排序
- UVALive 7272 Promotions(拓扑排序)
- UVALive 7272 Promotions【拓扑排序】【bitset】
- 【拓扑排序】 UVALive 6393 Self-Assembly
- UVALive4255-Guess(拓扑排序)