您的位置:首页 > 编程语言 > C语言/C++

Rikka with Graph

2015-08-29 21:59 351 查看


Rikka with Graph

 
 Accepts: 353
 
 Submissions: 1174

 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 65536/65536 K (Java/Others)

问题描述
众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习,其中有一道是这样的:

勇太有一张nn个点mm条边的无向图,每一条边的长度都是1。现在他想再在这张图上连上一条连接两个不同顶点边,使得1号点到nn号点的最短路尽可能的短。现在他想要知道最短路最短是多少,以及再保证最短路最短的情况下,他有多少种连边的方案。

当然,这个问题对于萌萌哒六花来说实在是太难了,你可以帮帮她吗?

输入描述
数据组数不超过100组。每组数据的第一行两个整数n,m(2 \leq n \leq 100, 0 \leq m \leq 100)n,m(2≤n≤100,0≤m≤100)。

接下来mm行。每行两个整数u,v(1 \leq u,v \leq n)u,v(1≤u,v≤n),代表原图中的一条无向边。注意可能有自环和重边。

输出描述
对于每一组数据输出一行两个整数:最短路最短是多少以及加边的方案数。

输入样例
2 1
1 2

输出样例
1 1

Hint

你只能连上1 2这条边。

    这题竟然没看清题目就做,所以以为是要用到图论来做,原来只是简单题。。。    总结:不能求快而节省审题时间。

AC代码:

#include<iostream>
#include<cstring>
#include<cstdio>
int main()
{
/*freopen("input.txt","r",stdin);*/
int n,m,j,k,f;
while(~scanf("%d%d",&n,&m))
{
f=0;
while(m--)
{
scanf("%d%d",&j,&k);
if(j==1&&k==n||j==n&&k==1)f=1;
}
k=1;
if(f)k=n*(n-1)/2;
printf("1 %d\n",k);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 杭电bc