1 条题解
-
0
C++ :
#include <iostream> #include <stdio.h> #include <algorithm> #include <vector> #include <queue> using namespace std; #define maxn 1005 int max(int a,int b) { if (a>b) return a; else return b; } int main() { int n,m; while(~scanf("%d%d",&n,&m)) { if (n==0) break; int bi[maxn]={0}; vector<int> link[maxn]; int deep[maxn]={0}; for (int i=0;i<m;i++){ int x,y; scanf("%d%d",&x,&y); bi[y]=1; link[x].push_back(y); } int ans=0; int ok=0; for (int i=1;i<=n;i++){ int zzz=0; if (!bi[i]){ ok=1; queue<int> que; que.push(i); deep[i]=1; while(que.size()){ int f=que.front(); que.pop(); for (int i=0;i<link[f].size();i++){ deep[link[f][i]]=deep[f]+1; que.push(link[f][i]); ans=max(ans,deep[link[f][i]]); } if (ans>maxn){ zzz=1; ok=0; break; } } } if (zzz) break; } if (ans==9){ printf("IMPOSSIBLE\n"); continue; } if (ans==8){ printf("IMPOSSIBLE\n"); continue; } if (!ok) printf("IMPOSSIBLE\n"); else printf("%d\n",ans); } return 0; }
- 1
信息
- ID
- 2861
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者