快手内推。://顺丰 学术交流AC代码 #include<iostream> using namespace std; typedef char VertexType; typedef int WeightType; #define MAXVEX 200002 #define MAXEDGE 100001 #define MYINFINITY 65535 int numPeople = 0, numLang = 0, numInfo = 0; int numMachine = -1; typedef struct Node { int adjVex; struct Node* next; }EdgeNode; typedef struct { EdgeNode* firstEdge; }Vertex; typedef struct { Vertex vexList[MAXVEX]; int numVertex, numEdge; }MGraph; void CreateMGraph(MGraph* G) { G->numVertex = numPeople+numLang; for (int i = 0; i < G->numVertex; i++) { G->vexList[i].firstEdge = NULL; } G->numEdge = numInfo; for (int k = 0; k < G->numEdge; k++) { int i = 0, j = 0;; cin >> i >> j; j = j + 100000; EdgeNode* p = new(EdgeNode); p->adjVex = j; p->next = G->vexList[i].firstEdge; G->vexList[i].firstEdge = p; p = new(EdgeNode); p->adjVex = i; p->next = G->vexList[j].firstEdge; G->vexList[j].firstEdge = p; } } void DFS(MGraph& G, int i, bool* visited) //极大连通子图的深度优先遍历 { visited[i] = true; EdgeNode* p = G.vexList[i].firstEdge; while (p != NULL) { if (visited[p->adjVex] == false) DFS(G, p->adjVex, visited); p = p->next; } } void DFSTraverse(MGraph& G) //深度优先遍历 { bool visited[MAXVEX]; for (int i = 1; i <=numPeople; i++) visited[i] = false; for (int i = 1; i <=numPeople; i++) if (visited[i] == false) { DFS(G, i, visited); numMachine++; } } int main() { MGraph G; cin >> numPeople >> numLang >> numInfo; if (numInfo == 0) { cout << numPeople ; return 0; } CreateMGraph(&G); DFSTraverse(G); cout << numMachine; system("pause"); return 0; }

0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
2019-08-24 20:20
门头沟学院 客服专员 0 点赞 评论 收藏
分享
2019-08-15 21:42
门头沟学院 客服专员 一只小卡:哇好不容易看到一个Python小伙伴,分享一下思路 n,m = [int(x) for x in input().split()]
A = []
for i in range(n):
A.append([int(x) for x in input().split()])
result = 0
#上下表面积都等于n*m
result += n*m*2
#A[i][j]左边的面积取决于A[i][j-1]的高度,右边的面积取决于A[i][j+1]的高度
#A[i][j]后面的面积取决于A[i-1][j]的高度,前面的面积取决于A[i+1][j]的高度
for i in range(n):
for j in range(m):
#左边
if j == 0:
result += A[i][j]
else:
result += max(0, A[i][j] - A[i][j-1])
#右边
if j == m-1:
result += A[i][j]
else:
result += max(0, A[i][j] - A[i][j+1])
#后面
if i == 0:
result += A[i][j]
else:
result += max(0, A[i][j] - A[i-1][j])
#前面
if i == n-1:
result += A[i][j]
else:
result += max(0, A[i][j] - A[i+1][j])
print(result)
0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享
caijiyizhi:可能对于其他语言的人可能难以理解代码,首先数组[1, 2, 3]位置为0, 1, 2,line_in = read1(1)的作用是比如读取2 1 3转化为相应的位置1, 0, 2,然后linesort =line_in.copy(),linesort.sort(),拷贝转化后的位置给linesort,并排序,也就是1, 0, 2排序为0, 1, 2,剩下的代码和其他语言没有什么区别,可能line[-idx]有人懵,比如L = ['Google', 'Runoob', 'Taobao'] L[-2]输出'Runoob'

0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: