1.   求一个有向图所有顶点入度的和

输入有向图的顶点个数,边数以及各顶点之间的关联情况,要求求出这个有向图的所有顶点入度的总和。

【输入格式】

第1行:2个空格分开的整数n(2<=n<=200)和m(10<=m<=20000),分别表示图的顶点和边数。

第2至m+1行:每行2个空格分开的整数i,j,i表示一条边的起点,j表示终点。

【输出格式】

只有1行,为1个整数,表示所有顶点的入度总和。

【样例输入】

3 6

1 2

1 3

2 1

2 3

3 1

3 2

【样例输出】

6

  1. #include <iostream>
  2. using namespace std;
  3. int a[][],n,m,ans = ;
  4. void init()
  5. {
  6. int i,j,k;
  7. cin >> n >> m;
  8. for(i=;i<=m;i++)
  9. {
  10. cin >> j >> k;
  11. a[j][k] = ;
  12. }
  13. }
  14. int main()
  15. {
  16. init();
  17. for(int i = ;i <= n; i++){
  18. for(int j = ;j <= n;j++){
  19. if(a[j][i] == ){
  20. ans++;
  21. }
  22.  
  23. }
  24. }
  25. cout << ans << endl;
  26. }

2、同班同学

有一个学校拥有N位学生,有些学生彼此是同班同学。我们根据“我的同班同学的同班同学也是我的同班同学”;也就是,如果A和B是同班同学,而且B和C是同班同学,那么A和C也是同班同学;换言之,A、B、C都是同一班的学生。当输入所有学生之间的这种关系后,计算全校共有几个班级?

【输入格式】

第1行,输入N和M,N为学生个数,M为有同班关系的同学的对数,(0<=N<=1000,0<=M<=100)接下来M行,输入有同班关系的学生编号。

【输出格式】

共1行,全校班级的个数

【样例输入】

6 5

1 2

3 4

4 5

4 6

5 6

【样例输出】

2

  1. #include<iostream>
  2. using namespace std;
  3. int g[][],visited[];
  4. int sum = ,n,m;
  5. int total = ;
  6. void dfs(int cur){
  7. visited[cur] = ;
  8. sum++;
  9. if(sum==n)
  10. return;
  11. for(int i=;i<=n;i++){
  12. if(g[cur][i]==&&visited[i]!=){
  13. visited[i]=;
  14. dfs(i);
  15. }
  16. }
  17. }
  18. int main(){
  19. cin>>n>>m;
  20. int i,j,a,b;
  21. for(i=;i<=m;i++){
  22. cin>>a>>b;
  23. g[a][b]=;
  24. g[b][a]=;
  25. }
  26. for(i = ;i <= n;i++){
  27. if(visited[i] != ){
  28. dfs(i);
  29. total += ;
  30. }
  31. }
  32. cout << total << endl;
  33. return ;
  34. }

1、铲雪车

随着白天越来越短夜晚越来越长,我们不得不考虑铲雪问题了。整个城市所有的道路都是双车道,因为城市预算的削减,整个城市只有1辆铲雪车。铲雪车只能把它开过的地方(车道)的雪铲干净,无论哪儿有雪,铲雪车都得从停放的地方出发,游历整个城市的街道。现在的问题是:最少要花多少时间去铲掉所有道路上的雪呢?

【输入格式】

输入数据的第1行表示铲雪车的停放坐标(x,y),x,y为整数,单位为米。

第2行表示街道的数量n(n<100),接下来n行,每行给出了一条街道的起点坐标和终点坐标,所有街道都是笔直的,且都是双向一个车道。铲雪车可以在任意交叉口、或任何街道的末尾任意转向,包括转U型弯。铲雪车铲雪时前进速度为20 km/h,不铲雪时前进速度为50 km/h。

保证:铲雪车从起点一定可以到达任何街道。

【输出格式】

铲掉所有街道上的雪并且返回出发点的最短时间,精确到分钟。

【样例输入】

0 0

3

0 0 10000 10000

5000 -10000 5000 10000

5000 10000 10000 10000

【样例输出】

3:55

【注释】

3小时55分钟

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. using namespace std;
  5. double fun(int a,int b,int c,int d)
  6. {
  7. double x,y;
  8. x = abs(a - c);
  9. y = abs(b - d);
  10. return sqrt(x * x + y * y) / ;
  11. }
  12. int main(){
  13. int x, y;
  14. while(cin >> x >> y)
  15. {
  16. int n, x1, y1, x2, y2;
  17. double sum = ;
  18. cin >> n;
  19. for(int i = ; i <= n; i ++)
  20. {
  21. cin >> x1 >> y1 >> x2 >> y2;
  22. sum += fun(x1,y1,x2,y2);
  23. }
  24. int T = sum - ;
  25. double t = sum - T;
  26. int te = floor(t * + 0.5);
  27. if(te >= )
  28. {
  29. T ++;
  30. te -= ;
  31. }
  32. cout << T << ":";
  33. if(te < ) cout << "";
  34. cout << te << endl;
  35. }
  36. return ;
  37. }

2.骑马修栅栏

农民John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。

John是一个懒惰的人,他讨厌骑马,因此从来不两次经过同一个栅栏。现在你编写一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每一个栅栏恰好都经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。

每个栅栏连接两个顶点,顶点用1到500标号(虽然有的农场并没有500个顶点)。一个顶点上可连接任意多(>=1)个栅栏。所有栅栏都是连通的(也就是你可以从任意一个栅栏到达另外的所有栅栏)。

你的程序必须输出骑马的路径(用路上依次经过的顶点号码表示)。我们如果把输出的路径看成一个500进制的数,那么当存在多组解的情况下,输出500进制表示法中最小的一个(也就是输出第一个较小的数,如果还有多组解,输出第二个较小的数,等等)。输出数据保证至少有一个解。

【输入格式】

第1行:一个整数F(1<=F<=1024),表示栅栏的数目。

第2到F+1行:每行两个整数i,j(1<=i , j<=500)表示这条栅栏连接i与j号顶点。

【输出格式】

输出应当有F+1行,每行一个整数,依次表示路径经过的顶点号。注意数据可能有多组解,但是只有上面题目要求的那一组解释正确的。

【样例输入】

9

1 2

2 3

3 4

4 2

4 5

2 5

5 6

5 7

4 6

【样例输出】

1

2

3

4

2

5

4

6

5

7

  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5. int g[][];
  6. int du[];
  7. int circuit[];
  8. int n,m,tot,x,y,start;
  9. void find(int i){
  10. for(int j = ;j <= n;j++)
  11. if(g[i][j]){
  12. g[i][j]--;
  13. g[j][i]--;
  14. find(j);
  15. }
  16. circuit[++tot] = i;
  17. }
  18. int main(){
  19. memset(g,,sizeof(g));
  20. cin >> m;
  21. for(int i = ;i <= m;i++){
  22. cin >> x >> y;
  23. g[x][y]++;
  24. g[y][x]++;
  25. du[x]++;
  26. du[y]++;
  27. n = max(n,max(x,y));
  28. }
  29. start = ;
  30. for(int i =;i <= n;i++)
  31. if(du[i] % ){
  32. start = i;
  33. break;
  34. }
  35. tot = ;
  36. find(start);
  37. for(int i = tot;i >= ;i--)
  38. cout << circuit[i] << endl;
  39. return ;
  40. }

noip第25课作业的更多相关文章

  1. noip第29课作业

    1.   钢条切割 [问题描述] 一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi.那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大. ...

  2. noip第24课作业

    1.  马走日 [问题描述] 马在中国象棋以日子形规则移动.请编写一段程序给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. ...

  3. noip第5课作业

    1.     计算税收 [问题描述] 对某产品征收税金,在产值1万元以上收税5%:在1万元以下但在5000元或者以上的征收税3%:在5000元以下但在1000元或以上征收税2%:1000元以下的免收税 ...

  4. noip第9课作业

    1.    打印乘法表 [问题描述] 用for循环实现输出1至9的乘法表 [样例输出] 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4 ...

  5. noip第7课作业

    1.    求平均值 [问题描述] 在一次运动会方队表演中,学校安排了十名老师进行打分.对于给定的每个参赛班级的不同打分(百分制整数),按照去掉一个最高分.去掉一个最低分,再算出平均分的方法,得到改班 ...

  6. noip第25课资料

  7. noip第34课作业

    1.    信息加密 [问题描述] 在传递信息的过程中,为了加密,有时需要按一定规则将文本转换成密文发送出去.有一种加密规则是这样的:1. 对于字母字符,将其转换成其后的第3个字母.例如:A→D,a→ ...

  8. noip第33课作业

    1.    排座椅 [问题描述] 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同 ...

  9. noip第28课作业

    分段数列 [问题描述] 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入格式: 输入第1行包含两个正整 ...

随机推荐

  1. andorid 网格视图GridView

    .xml <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android=&qu ...

  2. HTML&&css练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Shell脚本中$0、$?、$!等的意义

    变量说明$$ Shell本身的PID(ProcessID)$! Shell最后运行的后台Process的PID$? 最后运行的命令的结束代码(返回值)$- 使用Set命令设定的Flag一览$* 所有参 ...

  4. swift 中使用weak self

    request.responseString(encoding: NSUTF8StringEncoding) {[weak self] (res) -> Void in if let stron ...

  5. MySQL 检索数据及提高检索速度的方法

    检索数据 mysql> SELECT [DISTINCT] 表名.列名,表名.列名,表名.列名 -- 使用通配符*表示所有列 DISTINCT表示返回不同的值 -> FROM 数据库名.表 ...

  6. javascript对象bind()方法兼容处理

    bind() 函数在 ECMA-262 第五版才被加入:它可能无法在所有浏览器上运行.你可以部份地在脚本开头加入以下代码,就能使它运作,让不支持的浏览器也能使用 bind() 功能 if (!Func ...

  7. 在离线安装gazebo的时候可能在运行turtlebot_gazebo的时候会出现问题

    问题显示如下 gzserver: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain/src/OgreRenderSystem.cpp:546: ...

  8. mybatis3.2初学感悟

    新手,学了mybatis框架一周,写点感悟下来. mybatis,是操作数据库,持久层的一个框架,它是对JDBC的封装.看到了这个框架,我突然感受到封装与抽象的力量.也明白了些为什么要分层的原因. 记 ...

  9. python的数字图像处理学习(3)

    高级滤波: from skimage import data,color,data_dir import matplotlib.pyplot as plt from skimage.morpholog ...

  10. python学习之ansible api

    Python API 2.0 从2.0的事情开始更复杂一些,但是你会得到更多离散和可读的类: #!/usr/bin/env python import json from collections im ...