拓扑排序求助,按照题解思路做的但自己用了邻接表

P1983 [NOIP2013 普及组] 车站分级

1.emplace改成push(make_pair(,)) 2.括号打错地方了
by HZHDCM @ 2024-03-23 14:23:22


@[Lontano_Island](/user/1013142) ```cpp #include<bits/stdc++.h> #define PII pair<int,int> using namespace std; const int kMax=1005; int n,m; int s[kMax],ind[kMax]; bool stop[kMax],vis[kMax][kMax]; vector<int> edge[kMax*kMax]; queue<PII> q; int ans=0; int main() { cin>>n>>m; for(int i=1;i<=m;i++) { memset(stop,0,sizeof(stop)); int temp; cin>>temp; for(int t=1;t<=temp;t++) { cin>>s[t]; stop[s[t]]=1; } for(int cnt=s[1];cnt<=s[temp];cnt++) { if(!stop[cnt]) { for(int u=1;u<=temp;u++) { if(!vis[cnt][s[u]]) { ind[s[u]]++; vis[cnt][s[u]]=1; edge[cnt].push_back(s[u]); } } } } } for(int p=1;p<=n;p++) if(!ind[p]) q.push(make_pair(p,1)); while(!q.empty()){ PII in=q.front(); q.pop(); int i_first=in.first; int i_second=in.second; for(int d=0;d<edge[i_first].size();d++) { int to=edge[i_first][d]; ind[to]--; if(!ind[to]) q.push(make_pair(to,i_second+1)); ans=max(ans,i_second+1); } } cout<<ans; return 0; } ```
by HZHDCM @ 2024-03-23 14:24:56


|