首页 > 其他分享 >路径数量统计

路径数量统计

时间:2024-09-04 18:51:52浏览次数:7  
标签:const int 路径 样例 long 109 include 数量 统计

// 路径数量统计.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

/*
http://oj.daimayuan.top/course/22/problem/1044

题目描述
给你一张有向图,图中可能存在重边和自环,请求出从点 u
 出发经过恰好 k
 条边后到达点 v
 的通路的条数。由于答案可能很大,请输出答案模 109+7
。

输入格式
第一行两个整数 n,m
 分别表示点数和边数。

接下来 m
 行,每行两个整数 x,y
,表示从 x
 到 y
 有一条有向边。

最后一行三个整数 u,v,k
 表示询问。

输出格式
一行一个数表示答案模 109+7
 的结果。

样例输入
2 3
1 2
2 1
1 1
1 2 3
样例输出
2
数据范围
对于 100%
 的数据,保证 1≤n≤200,1≤m≤104,1≤x,y,u,v≤n,1≤k≤109
。
*/

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cstring>


using namespace std;

const int N = 200;
const int P = 1000000007;
int n, m, u, v, k;
long long f[N+1],a[N+1][N+1];

void aa() {
    long long w[N + 1][N + 1];
    memset(w, 0, sizeof w);
    for (int i = 1; i <= n; i++) {
        for (int k = 1; k <= n; k++) {
            if(a[i][k])
                for (int j = 1; j <= n; j++) {
                    if (a[k][j]) {
                        w[i][j] += a[i][k] * a[k][j], w[i][j] %= P;
                    }
                }
        }
    }

    memcpy(a, w, sizeof a);
}

void fa() {
    long long w[N + 1];
    memset(w, 0, sizeof w);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            w[i] += f[j] * a[j][i], w[i] %= P;
        }
    }

    memcpy(f, w, sizeof w);
}

void matrixpow(long long k) {
    for (; k; k >>= 1) {
        if (k & 1) 
            fa();
        aa();
    }
}


int main()
{
    scanf("%d%d",&n,&m);
    for (int i = 1; i <= m; i++) {
        int x, y;
        scanf("%d%d",&x,&y);
        ++a[x][y];
    }
    scanf("%d%d%d", &u, &v, &k);
    f[u] = 1;
    matrixpow(k);
    printf("%lld\n",f[v]);

}
 

标签:const,int,路径,样例,long,109,include,数量,统计
From: https://www.cnblogs.com/itdef/p/18397187

相关文章

  • AI大模型入门指南:从基础到实践的系统学习路径
    如何系统的入门大模型?本篇文章默认面向对大模型领域感兴趣的程序员。看一下围绕大模型的应用场景和人才需求:**Prompt工程:**基于提示词对大模型的使用,会问问题就行。**基于大模型的应用:在大模型生态之上做业务层产品。AI主播、AINPC、AI小助手。。。之前是会调API就行。......
  • [Python图论]在用图nx.shortest_path求解最短路径时,节点之间有多条边edge,会如何处理?
    问:在使用图求最短路径时,如果节点之间有多条路径,shortest_route=nx.shortest_path(G,source=start_node,target=end_node,weight='length')会如何处理,会自动选择最短那条吗?#输出图G各节点之间有多少条边edge,并给出其长度Edgesbetween103928and25508583:共2条Edge......
  • Pytest解决报告日志等相对路径问题
    我们在使用pytest搭建测试框架时,有时候为了方便会将生成报告/日志等参数直接作为默认参数配置在pytest.ini中,如pytest.ini[pytest]addopts=-v--html=reports/report.html--alluredir=reports/allure_resultslog_file=logs/test.log需要pipinstallpytestpytest-h......
  • 【路径规划】移动机器人在未知环境下目标的路径规划算法
    摘要本文介绍了一种新型路径规划算法,专用于在包含多个障碍物的环境中为机器人找到最优路径。该算法通过分析障碍物位置和目标点位置,生成一个引导机器人避开障碍物并到达目标的路径。项目展示了路径规划在机器人导航中的重要性,并通过实验验证了算法的有效性。理论路径规划是......
  • 如何通过SMB协议添加隐藏的共享路径映射为本地驱动器?
    要将远程服务器上的隐藏共享路径(如D:\wwwroot\WINCEAPI)映射为本地驱动器,你可以按照以下步骤操作:Windows系统打开文件资源管理器:按 Win+E 快捷键,或者在任务栏上点击文件夹图标。映射网络驱动器:在文件资源管理器的地址栏中输入 \\192.168.1.111,然后按Enter键。......
  • DAG 求u到v路径数
    DAG求u到v的路径数先拓扑排序求出每个点的顺序,再对每个起点\(s\)做dp,遍历拓扑序的点,对\(s\)能到达的点做dp统计路径数,如果终点\(t\)拓扑序在\(s\)之前就说明没有路径。#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineN200005const......
  • Java学习路径
    1.Java基础Java语法:变量、数据类型、控制结构(if、for、while等)面向对象编程:类、对象、继承、多态、接口异常处理:try-catch-finally,创建自定义异常集合框架:List、Set、Map等2.Java高级特性泛型:如何使用和创建泛型类和方法流(Streams)和Lambda表达式:处理集合和数据流多线......
  • 120.三角形最小路径和
    1.题目描述给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标+1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到......
  • 基于Seriall-LSTM-Transformer的自行车租赁数量预测研究(Matlab代码实现)
                            ......
  • 基于CNN-BiGRU-Attention的自行车租赁数量预测研究(Matlab代码实现)
           ......