码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2157

时间:2014-09-02 14:03:14      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:blog   os   io   for   div   log   sp   amp   on   

呃,离散数学课上直接就有这样的题

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

const int Mod=1000;
struct Matrax {
	int m[25][25];
};

Matrax a,per;
int n,m;

void initial(){
	memset(a.m,0,sizeof(a.m));
	memset(per.m,0,sizeof(per.m));
	for(int i=0;i<n;i++)
	per.m[i][i]=1;
}

Matrax multi(Matrax ae,Matrax b){
	Matrax c;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			c.m[i][j]=0;
			for(int k=0;k<n;k++)
			c.m[i][j]=(c.m[i][j]+ae.m[i][k]*b.m[k][j])%Mod;
		}
	}
	return c;
}

int Power(int u,int v,int k){
	Matrax ans=per,p=a;
	while(k){
		if(k&1){
			ans=multi(ans,p);
		}
		k>>=1;
		p=multi(p,p);
	}
	return ans.m[u][v];
}

int main(){
	int u,v,k;
	while(scanf("%d%d",&n,&m)!=EOF){
		if(n==0&&m==0) break;
		initial();
		for(int i=0;i<m;i++){
			scanf("%d%d",&u,&v);
			a.m[u][v]=1;
		}
		int T;
		scanf("%d",&T);
		for(int i=0;i<T;i++){
			scanf("%d%d%d",&u,&v,&k);
			int ans=Power(u,v,k);
			printf("%d\n",ans);
		}
	}
	return 0;
}

  

HDU 2157

标签:blog   os   io   for   div   log   sp   amp   on   

原文地址:http://www.cnblogs.com/jie-dcai/p/3951285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!