L3-1 那就别担心了 (30分)

这是今年天梯赛的一道题,当时L2的题一道都没过,这道L3的题自然也没看。赛后看了看,感觉蛮有意思,试着做了做。起初想到的思路是:DFS整个有向图,每次遍历到一个点都对该点所经路径+1,可这个题的N蛮大的,果然最后一个点超时,还有一个点答案错误(超时的测试点在我意料之内,本就写了个死笨的解法)。想了想第5个测试点测试的原因,又画了画一些特殊路径,果然找到了bug,从起点推到终点后不能再继续往起点下面推了,也就是把所有终点能到达的点(边)全部砍掉,也就是到达终点就不能往下走了,要把终点看成是一个汇点。解决这个bug后,28分,最后一个测试点卡算法优化。学长给了一种思路,解决了这个问题:用拓扑排序的思想,dp到达每个点的路径条数,挺好。这里借花献佛,上代码:

#include<bits/stdc++.h>

using namespace std;
vector<int> v[555];
vector<pair<int, int>> v2;
int vis[555];
int in[555];
int dp[555];
int n, m, s, e;

void DFS(int next) {
    if (next == e)
        return;
    vis[next] = 1;
    for (int i : v[next]) {
        if (!vis[i])
            DFS(i);
    }
}

signed main() {
    //freopen("in","r",stdin);
    cin >> n 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值