救救孩子 哪位大佬帮忙看一下这个 48分代码 WA

P2863 [USACO06JAN] The Cow Prom S

@[2019lzh](/user/414220) >请求出这个图点数**大于** $1$ 的强联通分量个数。
by 5k_sync_closer @ 2023-01-29 21:13:31


@[5k_sync_closer](/user/388651) 但是我把 if(jishu>=1) sum++;改成 if(jishu>1) sum++还是不行
by 2019lzh @ 2023-01-29 22:33:29


@[2019lzh](/user/414220) 1. `for(int i=1;i<m;i++)` 2. ```cpp else if (instack[i]==1); vis[x]=min(vis[x],vis[i]); ``` 自己找问题
by 5k_sync_closer @ 2023-01-30 06:45:55


@[5k_sync_closer](/user/388651) ``` for(int i=1;i<=m;i++) ``` ``` else if (instack[i]==1); vis[x]=min(vis[x],dfn[i]); ``` 辛苦了,是这样改吗,为什么还是不行QAQ
by 2019lzh @ 2023-01-31 21:10:13


@[2019lzh](/user/414220) 分号。
by 5k_sync_closer @ 2023-01-31 21:12:19


@[5k_sync_closer](/user/388651) ##### 哦哦没注意到 ##### 现在84分 剩下两个测试点 ##### 实在找不到错误了555555 ##### #2 #10 测试点2数据 ``` 9 20 1 6 9 6 3 4 4 3 5 6 6 7 7 8 5 1 9 5 8 7 5 9 9 8 9 1 8 1 1 5 6 1 8 5 1 9 7 5 7 6 ``` out ``` 2 ``` 实际输出 ``` 0 ``` 代码 ``` #include<bits/stdc++.h> using namespace std; int n,m,xx,yy,sum,num=0,jishu=1; stack <int> qq; bool visit[10001]; bool instack[10001]; int dfn[10001],vis[10001]; bool a[10001][10001]; void tarjan(int x) { //cout<<"tarjan "<<x<<endl<<endl; num++; vis[x]=dfn[x]=num; qq.push(x); //cout<<"qq.top "<<qq.top()<<endl; instack[x]=1; for(int i=1;i<=m;i++) { if(a[x][i]==1) { if(visit[i]!=1) { visit[i]=1; tarjan(i); vis[x]=min(vis[x],vis[i]); // cout<<"vis[x]=min(vis[x],vis[i])1 "<<x<<i<<"vis[]"<<x<<" "<<vis[x]<<endl;//测试 } else if (instack[i]==1) vis[x]=min(vis[x],dfn[i]); // cout<<"vis[x]=min(vis[x],vis[i])2 "<<x<<i<<"vis[]"<<x<<" "<<vis[x]<<endl;//测试 } } if(dfn[x]==vis[x]) //没用,执行出栈操作 { int jishu=0; //cout<<qq.top()<<"第31行pop1"<<endl;//测试 while(qq.top()!=x) { jishu++; // cout<<jishu<<" "<<qq.top()<<"第36行pop2"<<endl;//测试 instack[qq.top()]=0; qq.pop(); } instack[qq.top()]=0; qq.pop(); if(jishu>1) sum++; } return ; } int main(){ cin>>m>>n; for(int i=1;i<=n;i++) { cin>>xx>>yy; a[xx][yy]=1;//存图 } for(int i=1;i<=m;i++) { if(visit[i]==0) { // cout<<i;//test visit[i]=1; // cout<<"第61行tarjan"<<i<<endl;//测试 tarjan(i); } } // cout<<"输出正常"; cout<<sum; return 0; } ```
by 2019lzh @ 2023-02-01 08:36:38


@[2019lzh](/user/414220) `int jishu=0;`0 改成 1
by 5k_sync_closer @ 2023-02-01 14:49:38


@[5k_sync_closer](/user/388651) AC了谢谢 蒟蒻很多细节还是注意不到
by 2019lzh @ 2023-02-03 09:29:44


|