确定比赛名次,算很简单的拓扑排序了。领接矩阵表示。
#include
using namespace std;
int map[501][501];
int degree[501];
int main()
{
int i,j,k;
int n,m,p1,p2;
bool f;
while(cin>>n>>m)
{
memset(map,0,sizeof(ma...
分类:
其他好文 时间:
2015-03-15 23:02:43
阅读次数:
247
解析:最小生成树;Kruskal 算法:并查集实现。
1、首先找出符合要求的边;
2、对找出的边排序;
3、并查集找出n-1条边,无法修通n-1条路则无法实现要求。
#include
#include
#include
using namespace std;
struct Point
{
int x,y;
} point[102];
struct Edge
{
in...
分类:
其他好文 时间:
2015-03-15 16:56:39
阅读次数:
259
解析:又是一个并查集。
1、题意:王老师需要一些男生帮他做事。要求男生之间都是朋友关系,可以直接的,也可以间接地。最多可以挑选出几个男生(最少挑一个)?
2、并查集,求所有集合中最大集合的元素个数。
3、要注意一个地方是:当n=0时,要输出1。
#include
#include
using namespace std;
int p[10000001],num[100000...
分类:
其他好文 时间:
2015-03-15 16:52:47
阅读次数:
107
畅通工程的升级版。
求最小生成树。Kruskal 算法:应用并查集。
#include
#include
using namespace std;
int p[102];
bool Init(int n) //一开始指向自己
{
for(int i=0;i<=n;i++)
p[i]=i;
return true;
}
int Fi...
分类:
其他好文 时间:
2015-03-15 15:21:44
阅读次数:
154
分析:题意是判断是不是连通无环的图,使用并查集可以很好的解决。
1、判断是否成环,只需判断输入边的两个点。有共同的祖先,那么这两点就成环。
2、判断是否连通,只要判断根节点数为1即可。
3、注意:当输入数据只有0 0时,也是满足条件的,应输出 "Yes"。
#include
#include
using namespace std;
int p[100001];
bool...
分类:
其他好文 时间:
2015-03-15 15:18:57
阅读次数:
140
分析:
地图上有若干个城镇,城镇都可以看作点,然后给出哪些城镇之间是直接相连的。要解决的是整幅图的连通性问题。比如两个点,判断它们是否连通,或者整幅图共有几个连通分支,就是被分成多少个互相独立的块。因此这个题实质就是求有几个连通分支;如果是1个,则整幅图都连起来了;如果是2个,只要再修1条路,在两个分支中各选一个点,连起来,这样所有点就连起来了;3个连通分支,则只需再修两条。。。。。。,这样就可...
分类:
其他好文 时间:
2015-03-15 13:56:02
阅读次数:
413
1、每次计算只要取最后一位即可。
2、使用快速幂提高效率。
#include
using namespace std;
int pow(int a,int n)
{
if(n==1)
return a;
else if(n%2==1)
return (a*pow(a,n-1))%10;
else
{
int tmp;
tmp=pow(a,n>>1);
...
分类:
Web程序 时间:
2015-03-14 21:52:16
阅读次数:
187
分析:利用求最大子段和的思想进行求解。
1、首先累加s[i][j],表示第j列中i从第1行加到第i行的和。
2、对每一列的i1到i2行的和进行计算(0
3、对t[k]求最大字段和。
4、对所有t[k]求出的最大字段和求最大值,即可得到最大子矩阵的和。
5、注意:对maxres=0;maxres|=1
#include
using namespace std;
int G...
分类:
其他好文 时间:
2015-03-14 21:47:19
阅读次数:
207
题意:
1、 对于每一行来说,相邻的数不可同时取;
2、同样对于列来说,相邻的行也不能同时取;
3、因此可得状态方程:dp[i]=dp[i-1]>(dp[i-2]+a[i])?dp[i-1]:dp[i-2]+a[i]。先对每一行运用,在对每一行求出的和作为一组运用,可得最终结果。
#include
using namespace std;
int col[20000...
分类:
其他好文 时间:
2015-03-14 20:08:03
阅读次数:
127
使用深度优先搜索解决,很简单的题。
建立26个字母的邻接矩阵图和访问数组,从字母b开始搜索,若能到达字母m则可以变形。
#include
using namespace std;
int v[27];
int m[27][27];
bool dfs(int x)
{
if(x=='m'-'a') //搜到字母m结束
return true;
for(int i=0...
分类:
其他好文 时间:
2015-03-14 20:06:59
阅读次数:
190