http://172.20.6.3/Problem_Show.asp?id=1354

题意:求从起始点到终点走过的路程为x有多少种走法,不保证两点间只有一条路,刚走完一条路时不能原路返回,每条路长度为1。
 
把每条路更换为正反两条边,再造一条出到起点的边s造一条入为终点的边t,将每一条边作为邻接矩阵中的点,矩乘即可
注意题意告诉我们一条路中的正反两条边不能相连。
 
代码
 #include<cstdio>
#include<cstring>
#include<iostream>
const int maxn=;
const double eps=1e-;
const int modn=;
int n,m,d,s,t;
struct mat{
long long e[][];
mat(){ memset(e,,sizeof(e)); }
};mat a;
struct nod{
int y;
int f;
int rev;
int next;
}e[];
int tot=;
int head[]={};
mat Mul(mat x,mat y){
mat z;
for(int i=;i<=m*+;i++){
for(int j=;j<=m*+;j++){
for(int k=;k<=m*+;k++){
z.e[i][j]+=x.e[i][k]*y.e[k][j];
z.e[i][j]%=modn;
}
}
}
return z;
}
mat Pow(mat x,int k){
mat z;
for(int i=;i<=m*+;i++){
z.e[i][i]=;
}
while(k>){
if(k&){
z=Mul(z,x);
}
x=Mul(x,x);
k/=;
}
return z;
}
void init(int x,int y,int rev){
e[++tot].y=y;
e[tot].next=head[x];
e[tot].rev=rev;
head[x]=tot;
}
void dfs(int x,int v){
int y;
if(x==t){
a.e[v][*m+]=;
}
for(int i=head[x];i;i=e[i].next){
y=e[i].y;
if(v!=e[i].rev){
a.e[v][i]=;
}
if(!e[i].f){
e[i].f=;
dfs(y,i);
}
}
}
int main(){
scanf("%d%d%d%d%d",&n,&m,&d,&s,&t);
s+=,t+=;
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
init(x+,y+,tot+);
init(y+,x+,tot);
}dfs(s,);
mat z=Pow(a,d+);
printf("%lld\n",z.e[][*m+]);
return ;
}

最新文章

  1. java基础1.-------抽象类,抽象方法
  2. QT操作EXCEL
  3. 与你相遇好幸运,Sail.js创建.sailsrc文件
  4. spring,maven,dubbo配置
  5. asp.net预定义的HttpModule
  6. MAXFLOAT
  7. [转载] HTTP请求的TCP瓶颈分析
  8. eclipse注解——作者,创建时间,版本
  9. Scrum&amp;Kanban在移动开发团队的实践 (一)
  10. DevExpress GridControl GridView 导出到 Excel 类
  11. HashMap工作原理
  12. 找出数组中特定和数字下标(JAVA)
  13. Metropolis Hasting算法
  14. vs错误【C1083 C1854 C4727】的若干解决办法(对预编译文件头的解释)
  15. iOS 模态视图转场的动画效果
  16. vue webpack打包
  17. Luogu P1245 电话号码
  18. Python PIL 的image类和numpy array之间的互换
  19. Intellij-插件安装-JRebel热部署插件安装
  20. java解析复杂json:JSONObject 和 JSONArray的使用

热门文章

  1. 【BZOJ】3771: Triple FTT+生成函数
  2. 2017ACM暑期多校联合训练 - Team 4 1003 HDU 6069 Counting Divisors (区间素数筛选+因子数)
  3. Verilog笔记.3.有限状态机
  4. keepalived主备切换后的arp问题【转】
  5. HttpURLConnection传json
  6. Java Eclipse 配置
  7. groovy的三个强劲属性(一)Gpath
  8. 002利用zabbix监控某个目录大小
  9. eclipse maven jetty启动修改默认端口
  10. Java的BIO,NIO,AIO